【发布时间】:2020-10-24 04:45:18
【问题描述】:
为什么上面代码的输出是5,因为函数应该去第一个5-4-3-2(因为没有输出)循环递减到1所以返回12所以最后12+1.....所以我猜答案一定不是 5?
using namespace std;
int x()
{
}
int reee(int n)
{
for(int i=n; i>0; i--)
{
if(i==2)
{
return x();
}
else if(n==1)
{
return 12;
}
else
{
return reee(i-1)+1;
}
}
}
int main()
{
cout << reee(5) << " ";
}
【问题讨论】:
-
这不会编译。另外,
return x();应该做什么? -
x()是空的吗? -
你的程序有未定义的行为,因为
x没有返回任何东西。 -
它永远不会到达 n==1,因为在 i==2 处,x() 被调用,这是非递归的。
-
这段代码是你写的吗?无论如何,我建议从头开始。目前尚不清楚它应该做什么,但很明显它没有这样做。这看起来是一个学习如何使用调试器的好机会
标签: c++ recursion data-structures recursive-query tail-recursion