云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
学习一个新的东西,肯定需要先大概了解一下它是什么?然后我们还有知道学习它有什么用?其次我们要知道它的优缺点,这样有助于我们更好的选择何时使用它。下面就让我们带着这三点开始今天的文章。
概述
什么是递归
简单来说递归就是方法自己调用自己,每次调用时传入不同的变量。一直到程序执行到指定的出口时停止调用本身,并将结果层层返回。
递归的作用和优点
递归的核心思想就是将一个大问题,拆解成一个小问题,然后将小问题再次拆解,层层拆分从而简化问题。这种设计理念可以简化重复的代码让程序变得更加简洁。
递归的缺点
使用递归算法时每次方法的调用都需要在栈中开辟出一个空间保存相关数据,频繁的压栈、弹栈会导致效率变低。
递归使用注意事项
1、使用递归算法解决问题必须要有出口,不然就形成死循环了。好好的递归变成了“死归”!
2、递归的调用次数不宜过多不然会造成栈溢出。
总结
能通过循环解决的问题尽量不要使用递归,循环要比递归的效率高很多。再者我们需要知道任何技术都会有它的利弊,当我们享受其优点的时候也要考虑其不足之处,从而使我们的程序更加优秀。
代码演示
通过上面的介绍想必大家已经对递归有了一个初步的认知。下面让我们通过一个小例子来加深对递归的理解。
问题:求n的阶乘是多少?
阶乘的含义:一个正整数的阶乘是所有小于以及等于该数的正整数的积。(简单介绍一下预防有不太清楚其含义的)
代码实现:
为了让大家看得更加清晰,下面让我们通过一张图来了解一下,以上代码是如何在内存中执行的。
通过以上的图文介绍,想必大家对递归算法已经有了一个深刻的认识。那么我们学习它有什么用呢?
常见用途
1、通过递归实现斐波那契数列,也就是经常听说的“兔子繁殖”问题。
2、通过递归实现经典的“汉诺塔”和“八皇后”游戏。
3、通过递归实现二叉树的遍历。
4、通过递归删除指定目录下的所有文件,包括文件和文件夹下的文件。
以上就是我总结的一些递归算法常见的应用场景。
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-05-18
本文作者:_一只小菜鸟
本文来自:“掘金”,了解相关信息可以关注“掘金”