什么是递归函数

294 阅读1分钟

首先我们了解一下什么是递归

  • 在函数中调用自身的函数
  • 反复调用自身,每调用一次就会进入新的一层(就是每调用一次 它的参数都会发生变化)

递归的的最大好处就是简化代码,它把一个复杂化的问题可以转换简单代码描述出来

我们在使用递归的时候需要注意的

  • 要设定一个边界条件
  • 找到规律
  • 要使用return结束(不然会死循环 造成内存的泄露)

接下来递归是如何使用

斐波那契数列(第1项,2项是1),从第3项开始,每项的值是前两项相加的和。使用递归计算任意一项的值是多少

这个是通过循环来使用的 2022-06-01_092226.jpg

通过递归就能简化

2022-06-01_111.jpg

image.png

再来一个实例

数组求和 不允许用循环 不允许用标准库的函数

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 这个就是边界条件

找到了以上的规律 已经可以用递归了

如图

2022-06-01_2222.jpg

这个是大佬讲的动态递归 看完我觉得真的太牛了(虽然我没看懂) zhuanlan.zhihu.com/p/163017249