一文带你解开“递归算法”的奥秘

简介: 云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 学习一个新的东西,肯定需要先大概了解一下它是什么?然后我们还有知道学习它有什么用?其次我们要知道它的优缺点,这样有助于我们更好的选择何时使用它。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!


学习一个新的东西,肯定需要先大概了解一下它是什么?然后我们还有知道学习它有什么用?其次我们要知道它的优缺点,这样有助于我们更好的选择何时使用它。下面就让我们带着这三点开始今天的文章。

概述

什么是递归

简单来说递归就是方法自己调用自己,每次调用时传入不同的变量。一直到程序执行到指定的出口时停止调用本身,并将结果层层返回。

递归的作用和优点

递归的核心思想就是将一个大问题,拆解成一个小问题,然后将小问题再次拆解,层层拆分从而简化问题。这种设计理念可以简化重复的代码让程序变得更加简洁。

递归的缺点

使用递归算法时每次方法的调用都需要在栈中开辟出一个空间保存相关数据,频繁的压栈、弹栈会导致效率变低。

递归使用注意事项

1、使用递归算法解决问题必须要有出口,不然就形成死循环了。好好的递归变成了“死归”!

2、递归的调用次数不宜过多不然会造成栈溢出。

总结

能通过循环解决的问题尽量不要使用递归,循环要比递归的效率高很多。再者我们需要知道任何技术都会有它的利弊,当我们享受其优点的时候也要考虑其不足之处,从而使我们的程序更加优秀。

代码演示

通过上面的介绍想必大家已经对递归有了一个初步的认知。下面让我们通过一个小例子来加深对递归的理解。

问题:求n的阶乘是多少?

阶乘的含义:一个正整数的阶乘是所有小于以及等于该数的正整数的积。(简单介绍一下预防有不太清楚其含义的)

代码实现:

1

为了让大家看得更加清晰,下面让我们通过一张图来了解一下,以上代码是如何在内存中执行的。

2

通过以上的图文介绍,想必大家对递归算法已经有了一个深刻的认识。那么我们学习它有什么用呢?

常见用途

1、通过递归实现斐波那契数列,也就是经常听说的“兔子繁殖”问题。
2、通过递归实现经典的“汉诺塔”和“八皇后”游戏。
3、通过递归实现二叉树的遍历。
4、通过递归删除指定目录下的所有文件,包括文件和文件夹下的文件。

以上就是我总结的一些递归算法常见的应用场景。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-05-18
本文作者:_一只小菜鸟
本文来自:“掘金”,了解相关信息可以关注“掘金”

相关文章
|
3月前
|
存储 JavaScript 前端开发
递归的递归之书:第十章到第十四章
递归的递归之书:第十章到第十四章
23 0
|
3月前
|
算法 JavaScript 前端开发
递归的递归之书:第五章到第九章
递归的递归之书:第五章到第九章
96 0
|
7月前
|
算法
轻轻松松学递归
轻轻松松学递归
|
8月前
|
存储 算法 C语言
九分钟带你弄懂KMP算法【数理篇】
在原理篇当中我已经讲解了KMP中最核心的NEXT数组,以及他的求法:NEXT[j]存储了从PAT[0]到PAT[j-1]位置,以PAT[0]为首,PAT[j-1]为结尾的两个最长子字符串的长度位(可以重叠,但不能相等)。忘记的朋友们可以看看之前的篇章。
63 0
|
10月前
|
算法
算法创作 | 二叉树遍历问题解决方法
算法创作 | 二叉树遍历问题解决方法
51 0
|
机器学习/深度学习 自然语言处理 算法
『算法导论』什么是算法?什么是程序?
算法(Algorithm)是指解决问题的方法或过程,它包含一系列步骤,用来将 输入数据转换成输出结果 算法具有以下性质: • 输入:有零个或多个输入 • 输出:至少有一个输出 • 确定性:组成算法的每条指令清晰、无歧义 • 有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限
565 0
|
11月前
|
算法 Windows
C 递归 详解(通俗易懂)
C 数据结构与算法入门——递归 内容分享。
55 0
|
机器学习/深度学习 算法 搜索推荐
<<算法很美>>——(二)详解递归思想
<<算法很美>>——(二)详解递归思想
<<算法很美>>——(二)详解递归思想
|
算法 索引
LeetCode | 一探环形链表的奥秘【快慢双指针妙解BAT等大厂经典算法题】
附详细算法图解和证明解说,教你使用快慢双指针一破环形链表的奥秘
207 0
LeetCode | 一探环形链表的奥秘【快慢双指针妙解BAT等大厂经典算法题】
|
算法
递归算法一篇文通俗易懂快速掌握
- 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为 一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所 需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象 的无限集合。
递归算法一篇文通俗易懂快速掌握

热门文章

最新文章