首先,我道歉,我的英语很差。这是我在Stackoverflow上的第一篇文章。 我正在学习递归,有时它会让我感到震惊。 我堆积在这个代码上。我无法弄清楚它是如何工作的。 请有人解释我输出。 感谢。
#include <stdio.h>
#include <stdlib.h>
void sum(int n){
int i;
if(n==0)
return;
for(i=0; i<3; i++){
printf(" %d ",n);
sum(n-1);
}
printf("\n");
}
int main()
{
sum(2);
return 0;
}
答案 0 :(得分:0)
在第一次调用sum(2)时,它将进入函数,然后检查它是否不是0 skip,因此输入for循环,现在先进行迭代打印2并调用sum(1)..就像上面一样..现在sum(1)将打印1并再次调用sum(0)这次输入if条件并返回sum(1)状态调用next next for interation打印当前n即0调用sum(-1)并且将打印-1调用sum(-2)print -2 .....等等...无限运行时....这件事太乱了:/