我正在尝试学习递归。我不明白为什么下面这段代码会无限循环运行?
void myFunc(int n)
{
if(n==0)
return;
else
{
printf("%d\n",n);
myFunc(n--); //if I put n=n-1 before this line then it is running fine and will exit from the function .
printf("%d\n",n);
}
}
int main()
{
myFunc(4);
}
最佳答案
--
是您正在使用的后递减运算符,仅在使用 n
的值调用 myFunc
后才生效,因此您将一遍又一遍地使用相同的值调用 myFunc
。
将它用作预递减运算符可以解决您的特定用例:myFunc(--n)
与放置 n=n-1
有类似的效果上线前。
关于c - 为什么这个函数在无限循环中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843667/