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

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

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

#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日

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名