递归:不明白这个结果

时间:2016-08-16 21:28:52

标签: c recursion

void func(int num){
    if(num< 3){
        printf("%d ", num);
        func(num+ 1);
        printf("%d ", num);
    }
}

假设我用func(0)调用此函数。 为什么结果为0 1 2 2 1 0? 我不知道为什么它在减少。

1 个答案:

答案 0 :(得分:11)

这是一个堆栈跟踪

f(0)
    print 0
    f(1)
        print 1
        f(2)
            print 2
            f(3)  // 3 < 3 == false
            print 2
         print 1
     print 0