Ras*_*yak 1 c++ recursion decrement
当我执行这个belo程序时,它正在5无意中打印.为什么?是因为减量没有发生还是在减量发生之前函数调用正在发生?
我尝试了替代方式制作fun(--n),它给了我正确的答案.但为什么它不起作用fun(n--)?
void fun(int n)
{
if(!n)
{
cout << n << " " << endl;
}
else
{
cout << n << " "<<endl;
fun(n--);
}
}
int main()
{
int n = 5;
fun(n);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你需要做foo(--n)而不是foo(n--)
所以,当你这样做时,你foo(n--)可以减去n的值,但是向foo函数发送n bofore递减.你可以猜到这将永远存在
void fun(int n)
{
if(!n)
{
cout << n << " " << endl;
}
else
{
cout << n << " "<<endl;
fun(--n);
}
}
int main()
{
int n = 5;
fun(n);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
了解更多关于的区别n--和--n阅读这里