• 算法与数据结构---5、递推


    算法与数据结构---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
    
    */
     
  • 相关阅读:
    Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
    Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p
    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p
    Atitit.文件搜索工具 attilax 总结
    Atitit.文件搜索工具 attilax 总结
    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package
    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package
    Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结
    Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13047562.html
Copyright © 2020-2023  润新知