【问题标题】:Recursion: don't understand this result递归:不明白这个结果
【发布时间】:2016-08-17 05:37:52
【问题描述】:
void func(int num){
    if(num< 3){
        printf("%d ", num);
        func(num+ 1);
        printf("%d ", num);
    }
}

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

【问题讨论】:

标签: c recursion


【解决方案1】:

这是一个堆栈跟踪

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

【讨论】:

  • 好吧,很酷,我明白为什么 3 是假的,它会打印出 2。但是为什么之后它还会打印 1 和 0?
  • 当你在另一个函数(A)中调用一个函数(B)时,你不会中断函数(A),你将它堆叠起来,一旦被调用的函数(B)结束就返回它跨度>
  • 哇,谢谢,我从来没想过。这澄清了很多事情。
  • 我很高兴我的帖子对你有所帮助 :) @GillesVanHooff
猜你喜欢
  • 2020-04-16
  • 2021-08-24
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 2013-09-10
  • 2017-04-22
相关资源
最近更新 更多