为什么此递归函数陷入无限循环?它显示Val的值没有下降。背后的逻辑是什么?
int Bar(int Val) // value passed is 3
{
int x=0;
while (Val>0)
{
x=x+Bar(val-1);
}
return Val
}
答案 0 :(得分:5)
这不是递归,而是while循环永远不会结束。
while (val>0) {
x=x+bar(val-1);
}
在此循环中,您永远不会更改val
的值。因此循环永远不会终止。
答案 1 :(得分:1)
@linuxfan是正确的。
也许您想执行以下操作:
while (val>0) {
x=x+bar(--val);
}
都将值传递的值减小1并更改循环变量。
请注意另一件事:假设您拼写错误的Val
和val
,如果它们是相同的变量,则返回值将始终为0,因为循环在val
为0时终止,然后返回值。
尝试以下代码:
#include<stdio.h>
int Bar(int val) // value passed is 3
{
int x=0;
while (val>0)
{
x=x+Bar(--val);
}
printf("%d\n", val);
return val;
}
int main (void)
{
Bar(3);
return 0;
}