欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
什么是递归算法?
通常来说函数再其定义的过程当中有直接或者间接调用自己的一种方法称为递归。

递归算法的优点
使用递归算法要注意的问题
1、转化过程中的子问题必须和原始问题是同一件事,而且转化的子问题必须比原始问题更简单。
2、在函数调用的过程中不能出现无限调用,必须有一个出口来终止问题。 而且在调用过程中要逐步向出口逼近。
递归算法实战讲解
今天为了让大家初步了解递归算法我们将以求n!(n的阶乘)为例为大家介绍递归算法。
首先我们来分析n!,n!=n!=1×2×3×...×n。同时n!还可以表示为n!=(n-1)!×n。通过第二个表达式我们不难看出我们将n!问题转化为求(n-1)!。那么我们再将(n-1)!用这个方法逐步展开最终我们要求的问题就是1!,然而我们知道1!=1。那么n!问题通过不断的转化就得到了解决,而1!就是我们所说的出口。下面我们来看代码的解析。

评价一个如何评价一个算法的好坏,关键还是要看算法的时间和空间复杂度。
递归算法缺点是每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址以及临时变量,而往栈中压入数据和弹出数据都需要时间。所以递归算法的效率可能比平常所用的解决方案低。
总结
通过学习和分析递归算法我收获到的是一种数学上常用到的将复杂问题简单化的思维,我个人认为学习递归算法不代表我们将来一定要用到它,可是当我们无法解决一个较难的问题时,我们可以用递归算法的思路来解决问题。
更多精彩文章:
where2go 团队
长按识别二维码关注我们!
温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!
文章转载自算法与编程之美,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





