简单的了解一下递归
前言
在编程中,递归大家肯定都不陌生了吧,今天我们来总结总结有关于递归的东西。
什么?! 你陌生, 去刷题去,完后你就熟了。
递归的定义
程序调用自身的编程技巧称为递归
递归长什么样子
提到举例子我们肯定第一个想到的就是阶乘。
n! = n * (n-1) * (n-2) * …* 1(n>0)
5! = 5 * 4 * 3 * 2 * 1
阶乘是我们从小学数学就接触的东西,没想到它现在还陪伴着我们🙄
用代码实现一下:
1 | function recursion(n) { |
再举一个例子吧,也是我们初高中课本上的,著名的河内塔问题:
这个问题也是用递归来解决的:
1 | function hanoi( n, p1, p2, p3) |
总结一哈
既然要写递归,就要知道它具备什么条件,从上面的例子不难看出,递归是具有边界条件的,阶乘中的n==1
和河内塔中的1==n
都是边界条件,递归还具有两个部分,边界条件满足的时候进入返回过程,边界条件不满足的时候,再次进入递归过程。
那么它还具有什么特点呢?
- 它必须有一个出口条件,也就是要有一处作为结束,变成非递归的样子处理。
- 递归处理的子问题要同原问题一样,并且逐渐变得简单。
总结一下:我们写的递归要具有边界条件,和基于边界条件分别做出的两部分处理过程。
并且使用递归是要逐渐使得问题变得简单,最终用非递归的方法作为结尾哦。
最后
我觉得,递归是思考过后对于问题提出的一种解决方案。
在你提出用递归解决的时候,就已经知道他的边界条件是什么了,只需要写出递归的那部分,随后使用非递归的方式作为程序出口即可。
点个赞,一起学习进步吧♥
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Wangez-Blog!
评论