C++ 数据结构(五递归)


递归

递归定义

递归是一种解决问题的思想,一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。

递归执行过程

最好的说明可能是图,斐波那契数列执行过程: 
      在这里插入图片描述

重要概念

相关递归概念:
    递归函数,递归过程
    直接递归:函数直接调用自身;间接递归:函数调用其他函数时又产生对自己的调用
    尾部递归函数:函数所做的最后一件事情是函数调用。随着被调用次数增加不会增加对栈空间的使用。

递归应用

定义递归:树、阶乘、斐波那契数列
存储递归:树、链表、数组
问题方法递归:分治法(八皇后、汉诺塔)

递归程序到非递归的转换
简单转换*

直接求值,无需回溯
递推求解——递归求解
递推求解是已知最小问题,然后由最小问题向上求解。
递归求解是已知分解最小问题条件,然后从上至下分解问题。
在这里插入图片描述

复杂转换

不能直接求值,必须试探回溯
用栈记录管理回溯点

转化的形式化步骤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Echo一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值