递归手动跟踪

时间:2017-01-27 19:10:36

标签: c recursion

首先,我道歉,我的英语很差。这是我在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;
}

1 个答案:

答案 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 .....等等...无限运行时....这件事太乱了:/