算法与数据结构---5、递推
一、总结
一句话总结:
递推算法就是对于一个问题,我们找到它数学对应的递推表达式,也就是相邻几项的关系。
递推算法就是对于一个问题,我们找到它数学对应的递推表达式,
也就是相邻几项的关系。
递推算法避开了求通项公式的麻烦,把一个复杂的问题的求解,
分解成了连续的若干步简单运算。
利用计算机计算能力很强的特点,可以很方便的一步一步(循环)计算从而得到解。
递推简单而言就是找规律,找出递推表达式
1、解决递推问题的一般步骤?
a、建立递推关系式
b、确定边界条件
2、递推的两种形式?
顺推法和倒推法
3、找出递推表达式的方式?
A、题目中非常明显给出
B、通过枚举前几项来找规律
4、递推在后面算法中的应用?
递归:递归中元素之间的关系,其实可以看做递推表达式
动态规划:动态规划中的 状态转移方程 其实也可以看做递推表达式
二、递推
博客对应课程的视频位置:5、递推
https://www.fanrenyi.com/video/27/272
/* 一、递推法是什么 递推算法就是对于一个问题,我们找到它数学对应的递推表达式, 也就是相邻几项的关系。 递推算法避开了求通项公式的麻烦,把一个复杂的问题的求解, 分解成了连续的若干步简单运算。 利用计算机计算能力很强的特点,可以很方便的一步一步(循环)计算从而得到解。 递推简单而言就是找规律,找出递推表达式 二、解决递推问题的一般步骤 1、建立递推关系式 2、确定边界条件 三、递推的两种形式 顺推法和倒推法 四、找出递推表达式的方式 1、题目中非常明显给出 2、通过枚举前几项来找规律 五、递推在后面算法中的应用 递归:递归中元素之间的关系,其实可以看做递推表达式 动态规划:动态规划中的 状态转移方程 其实也可以看做递推表达式 */
2、兔子繁殖
/* 一对兔子,从出生后第3个月起每个月都生一对小兔子。 小兔子长到第3个月后每个月又生一对兔子。 假如兔子都不死,并且第1个月出生一对小兔子,请问第n个月有多少只兔子? 分析 第一个月:1对兔子 第二个月:1对兔子 第三个月:已有的兔子(上个月的1对兔子)+新生的兔子(第一个月兔子新出生的1对兔子)=2对兔子 第四个月: 已有的兔子(上个月的2对兔子)+ 新生的兔子(两个月前的兔子,第二月的兔子这个时候都有生育能力,都可以生小兔子,所以1对)= 2+1=3对兔子 第五个月: 已有的兔子(上个月的3对兔子)+ 新生的兔子(两个月前的兔子,第三月的兔子这个时候都有生育能力,都可以生小兔子,所以2对)= 3+2=5对兔子 第六个月: 如何设f(n)表示第n个月的兔子总数 已有的兔子(上个月的5对兔子,为f(n-1))+ 新生的兔子(两个月前的兔子,第四月的兔子这个时候都有生育能力,都可以生小兔子,所以3对,为f(n-2))= f(n-1)+f(n-2)=5+3=8对兔子 ........... 第n个月:f(n)= 已有的兔子(f(n-1))+ 新生的兔子(前两个月的兔子f(n-2)都有繁殖能力,都可以生小兔子) =f(n-1)+f(n-2) 得到递推关系式:f(n)=f(n-1)+f(n-2) 枚举找规律: 一月 1 二月 1 三月 2 四月 3 五月 5 六月 8 */