随笔随记随想-递归算法

递归到底是什么?

众说纷纭:

1.递归是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。

2.递归就是一种方式,所有的递归都可以用循环替代

3.从前有座山,山里有个庙,庙里有个老和尚正在讲故事:从前有座山,山里有个庙,庙里有个老和尚正在讲故事:从前有座山,山里有个庙,庙里有个老和尚正在讲故事...

这就是递归原理...递归算法得有递归出口,否则就会死循环...递归算法效率较低,占用栈空间较大,容易发生栈溢出.

4.递归处理代码简洁外,还有个好处,就是你在循环前,不知道循环的层次是多少时,用递归比较方便,譬如遍历树、遍历磁盘文件等,在循环前,你根本不知道磁盘有多少个文件夹和文件,调用递归无需事先知道这些,只要找到最后文件夹时返回就可以了

5.递归分为2种,直接递归和间接递归。

直接递归,比如方法A内部调用方法A自身
间接递归,比如方法A内部调用方法B,方法B内部调用方法C,方法C内部调用方法A

6.它也没什么特别的原理,就是方法调用 ,方法调用 就是在压栈,只是它特殊中方法自己调用 自己,其实和调用 其它方法完全 一样,递归中值得注意的是它的弹出 条件,要不可能选成死循环.

7.函数被调用还未结时再调用函数,则会保存当前状态,入栈,依次类推,当最后一个函数执行完后,倒数第二个函数出栈,再也倒数第一个函数的结果进行计算,依次类推;并且:函数是被放在程序区的,函数调用实际上就是取得函数在内存中的地址,执行内存中的机器码;

上面都应该都是对的,那递归是什么已经知道,那我们何时,或者说怎么去用递归来解决问题。虽然递归算法被称为一种算法,我觉得更像一个思想,其衍生算法有很多,如并归排序,快速排序,背包问题,八皇后问题等等。

仅仅理解递归算法还是不够,最重要的实践,真正需要掌握的并不是一种算法,而是一种去分析问题并解决问题的的办法。个人拙见,如有错误,多多包含。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值