首先我们了解一下什么是递归
- 在函数中调用自身的函数
- 反复调用自身,每调用一次就会进入新的一层(就是每调用一次 它的参数都会发生变化)
递归的的最大好处就是简化代码,它把一个复杂化的问题可以转换简单代码描述出来
我们在使用递归的时候需要注意的
- 要设定一个边界条件
- 找到规律
- 要使用return结束(不然会死循环 造成内存的泄露)
接下来递归是如何使用
斐波那契数列(第1项,2项是1),从第3项开始,每项的值是前两项相加的和。使用递归计算任意一项的值是多少
这个是通过循环来使用的
通过递归就能简化
再来一个实例
数组求和 不允许用循环 不允许用标准库的函数
let nums = [ 5,1,6,7,2,9]
这里我们就可以使用递归的放来实现
1.首先找规律 假设f(i) 它的表示的是从数组i到数组末尾之和
f(2) = nums[2] + f(3) -> f(i) = nums[i] + f(i+1) 这个规律我们就找到了
但是还是有缺陷 如果i超出了数组的长度 没有数字 那么应该给它输出0
所以i>nums.lenght的时候 f(i) = 0 这个就是边界条件
找到了以上的规律 已经可以用递归了
如图
这个是大佬讲的动态递归 看完我觉得真的太牛了(虽然我没看懂) zhuanlan.zhihu.com/p/163017249