关于递归

递归的核心思路只有一句话,就是 使用自己来定义自己。在很多编程实践中,递归已经是家常便饭了。比如文件遍历操作,分形图的计算等等。

这篇小结不描述具体的问题,只抽象一般的思考方法。可以有意识的用这种思想方法去实践模型问题。很有裨益。


一.比较典型的递归数学问题

     1.汉诺塔模型:将n个圆盘以从大到小的方式放在柱子A上,要求通过柱子C,将所有的盘移动到柱子B上。

                             规则:移动的时候一次只能移动最上端的圆盘。

                                        小圆盘上面不能放大圆盘。

     2.阶乘问题:n!

     3.求和问题:s(n) = s(n-1) + n

     4. 斐波那契数列问题:f(n) = f(n-1) + f(n-2)

     5.杨辉三角与分形图


二.递归的首要意识:寻找递归结构

     递归往往是解决复杂问题时候,抛开真实时间,寻求数学途径的方法。发现一个问题是否可以归结为递归。保持一个意识很重要:是否能将复杂的问题转化为简单的同类问题。——也就是说,是否可以用自己来解释自己。

     对于已经的典型问题基本可以很快进行总结。但实际操作中有很多现实问题,需要首先注意分解问题的结构。不同的角度来分解结构,得到的逻辑可能就完全不一样。

     1.提出假设:用n来描述当前的问题,则用n-1是否可以表述n规模的问题。

     2.小规模论证。从基数1开始,验证解析式是否正确。

     3.必要情况下,使用数学归纳法。


三.归纳

    1.从n层的整体问题中隐去部分问题。

    2.判断剩余部分是否是n-1层的问题。

     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值