我想学习递归.我不明白为什么下面的代码在无限循环中运行?
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);
}
Run Code Online (Sandbox Code Playgroud)
--当你使用它时,它是一个后递减运算符,只有在myFunc用值值调用后生效n,所以你将myFunc一遍又一遍地调用相同的值.
使用它作为预递减运算符将修复您的特定用例:myFunc(--n)将具有类似于n=n-1之前放线的效果.