在 C 中接收函数调用
Receive function call in C
为什么这个递归函数会陷入死循环?它表明 Val 的价值并没有减少。这背后的逻辑是什么。
int Bar(int Val) // value passed is 3
{
int x=0;
while (Val>0)
{
x=x+Bar(val-1);
}
return Val
}
不是递归,而是永不结束的while循环
while (val>0) {
x=x+bar(val-1);
}
在此循环中,您永远不会更改 val
的值。所以循环永远不会终止。
@linuxfan 是对的。
也许您想执行以下操作:
while (val>0) {
x=x+bar(--val);
}
既传值减1又改变循环变量
注意另一件事:假设您拼错了 Val
和 val
,如果它们是同一个变量,则返回值将始终为 0,因为当 val
为 0 时循环终止,然后returns这个值。
试试这个代码:
#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;
}
为什么这个递归函数会陷入死循环?它表明 Val 的价值并没有减少。这背后的逻辑是什么。
int Bar(int Val) // value passed is 3
{
int x=0;
while (Val>0)
{
x=x+Bar(val-1);
}
return Val
}
不是递归,而是永不结束的while循环
while (val>0) {
x=x+bar(val-1);
}
在此循环中,您永远不会更改 val
的值。所以循环永远不会终止。
@linuxfan 是对的。
也许您想执行以下操作:
while (val>0) {
x=x+bar(--val);
}
既传值减1又改变循环变量
注意另一件事:假设您拼错了 Val
和 val
,如果它们是同一个变量,则返回值将始终为 0,因为当 val
为 0 时循环终止,然后returns这个值。
试试这个代码:
#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;
}