# include<stdio.h>
int somthing(int);
int main()
{
int i=9;
somthing(i);
return 0;
}
int somthing(int i)
{
if(i == 0)
return 0;
else
printf("%d,", i);
somthing (i--);
}
我不明白为什么编译器只打印 9 9 9 ,然后说出超时无限运行。 我确实在 i变量上减去了一个值,每次应该进入循环,它应该打印从9到0的值,代码在 i变量上进行预减量时工作正常
答案 0 :(得分:3)
我确实在i变量上减去了一个值,每次应该进入循环,它应该打印从9到0的值
您正在使用的i--
是后期增量。它会将i的值发送到something()
函数,然后递减i
的值。因此,somthing()
函数始终获取值9
。因此它进入无限递归调用。
你需要的是preincrement --i
。它将递减i
的值,然后将其发送到函数somthing()
答案 1 :(得分:1)
int somthing(int i)
{
if(i == 0)
return 0;
else
printf("%d,", i);
somthing (--i);
}
这样做。看看是否有效