我正在学习递归,有时它让我大吃一惊。 我堆放在这段代码上。我不知道它是如何工作的。 请有人解释我的输出。 谢谢。
#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;
}
最佳答案
在第一次调用 sum(2) 时,它将进入函数然后检查它是否不是 0 skip 所以进入 for 循环,现在首先进行迭代 print 2 并调用 sum (1) ..就像上面一样..现在 sum (1) 将打印 1 并再次调用 sum(0) 这次输入 if 条件并返回 sum(1)state call now next for interation print current n 即 0 call sum(-1) 并且将打印 -1调用 sum(-2) print -2 ......等等......无限运行时间......这东西太乱了:/
关于c - 递归手动跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41901327/