递推和递归


【概述】

一、递归

递归算法:一种通过重复将问题分解为同类的子问题而解决问题的方法。
适用问题:解决结构相似的问题。即:原问题所分解成的子问题和原问题解决方法相同
特点:反复执行、结束反复执行的条件
缺点:占用大量内存且不易阅读

组成部分

递归边界条件(递归终止条件):确定递归到何时终止或有解的情况。
递归模式(递归体):大问题是如何分解为小问题的。
:递归终止条件通常就是得出最小问题的解,并返回给他的调用者;
在这里插入图片描述

间接与直接(递归)

1.直接递归调用:就是在函数f中直接调用函数f本身
在这里插入图片描述

2.间接递归调用:就是在函数f1中调用另外一个函数f2,而该函数f2又调用了函数f1
在这里插入图片描述

二、递推

递推关系:给定一个序列,相邻的数据项间的关系,即递推关系。
递推算法:指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果。
特点:避开了求通项公式的麻烦,把一个复杂问题的求解,分解成了连续的若干简单运算。一般说来,可以将递推算法看成是一种特殊的迭代算法
:在我们实际解题中,题目不会直接给出递推关系式,而是需要通过分析各种状态,找出递推关系式。

组成部分

1、初始状态(问题给出或分析得到);
2、用固定的递推关系式来表示其它各个状态。

逆推与顺推

顺推:从已知条件出发逐步推到问题结果
逆推:从问题出发逐步推到已知条件

三、递推与递归的比较

相对于递归算法,递推算法免除了数据进出栈的过程,也就是说,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值。

【应用】

五种典型的递推关系

  1. Fibonacci数列
  2. Hanoi塔问题
  3. 平面分割问题
  4. Catalan数
  5. 第二类Stirling数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值