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
阅读这里
归档时间: |
|
查看次数: |
235 次 |
最近记录: |