J1awexr 2022-05-27 11:31 采纳率: 0%
浏览 15

算法分析与设计 第五版 李老师的例子

算法分析与设计 第五版 李老师的例子:

#include <stdio.h>
void f(int n)
{  if (n<1) return;
     else
  {    printf("调用f(%d)前,n=%d\n",n-1,n);
    f(n-1);
    printf("调用f(%d)后:n=%d\n",n-1,n);
  }
}

运行结果:

img

不明白运行结果为什么是这样
而不是 调用f(4)前,n=3
调用f(4)后,n=3递推下去这样的结果

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-05-27 15:15
    关注

    “给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
    递归函数关注以下几个因素
    ·退出条件
    ·参数有哪些
    ·返回值是什么
    ·局部变量有哪些
    ·全局变量有哪些
    ·何时输出
    ·会不会导致堆栈溢出

    评论

报告相同问题?

问题事件

  • 创建了问题 5月27日