前言
这堂课主要学习了算法设计中重要的递归的概念,使用环境和应用实例。
一、递归算法是什么?
递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的调用。递归算法就是将原问题不断分解为规模缩小的子问题,然后递归调用方法来表示问题的解。
二、什么问题可以用到递归来解决
常常用到递归算法的三种情况
一一问题定义即为递归定义
阶乘
斐波纳契数列
杨辉三角的取值
一一部分数据结构也是用递归来定义的
树
一一问题应用递归算法来解决
hanoi塔问题
三、递归模型
一般由递归出口和递归体两部分组成,前者确定递归到何时为止,后者确定递归的方式。
递归算法的设计步骤
- 对原问题f(s)进行分析,假设出合理的较小问题f(s’)。
- 假设f(s’)是可解的,并在此基础上确定f(s)的解,即给出f(s)与f(s’)之间的关系。
- 确定一个特定情况(如f(1)或f(0))的解,作为递归出口。