什么也不会, 2022-05-08 14:28 采纳率: 100%
浏览 14
已结题

函数的递归有输出语句,运行后,不明白其输出顺序

想用函数的递归输出斐波那契前5数,后来发现实现不了,但是根据这个错误代码,不明白这几个数字输出顺序

img

  • 写回答

1条回答 默认 最新

  • A-Chin 2022-05-08 14:43
    关注

    递归是个U字型的

    在执行时,是先得到f(1),再是f(2),...,f(n)

    执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函数执行完毕后,再一层一层地由里到外退出。

    可以认为是一个U字型,先调用到最底层,然后再一层层的退出获取每层的结果

    每一个递归函数都应该只进行有限次的递归调用,否则它就会进入死胡同,永远也不能退出了,这样的程序是没有意义的。

    要想让递归函数逐层进入再逐层退出,需要解决两个方面的问题:

    1. 存在限制条件,当符合这个条件时递归便不再继续。对于 factorial(),当形参 n 等于 0 或 1 时,递归就结束了。

    2. 每次递归调用之后越来越接近这个限制条件。对于 factorial(),每次递归调用的实参为 n - 1,这会使得形参 n 的值逐渐减小,越来越趋近于 1 或 0。


    在这里补一句 cout << "这是fun(" << n << ")" << endl; ,有助于理解怎么调用

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。