【发布时间】:2013-08-14 07:43:02
【问题描述】:
当我执行这个 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;
}
【问题讨论】:
-
C 和 C++?这不是 C,只是 C++。
-
因为
n--返回5。 -
因为您使用后减量运算符,它会一次又一次地为 fun 赋予值 5 ......并且在函数调用 n 后递减。不过,堆栈溢出的收据很好。
-
顺便说一句,我称之为无限递归。
-
虽然它与问题无关,但我也将
cout << n << " " <<endl;移动到if之前,因为这样可以使代码更简单,并且不会改变任何内容。