递归

170 阅读1分钟

递归的介绍

就是函数自己调用自己。是循环运算的一种算法模式。常用于解决一些数学运算,如阶乘函数、求和和斐波那契数列。

使用时要 注意 以下两部分:

  • 递归调用的过程。

  • 递归终止的条件(出口)。

在没有限制的情况下,递归运算会无终止地自身调用,所以 在递归运算中要结合 条件语句(if)进行控制,只有在某个条件成立时才允许执行递归,否则不允许调用自身

  • 阶乘函数
function f1(n) {
    if (n == 1) {
        return 1
    } else {
        return n * f(n - 1)
    }
}
console.log(f1(5));
  • 求和
function f(n) {
    if (n == 1) {
        return 1
    } else {
        return n + f(n - 1)
    }
}
console.log(f(100));
  • 斐波那契数列

21d69c90709463704be2b8d87b1a86a1.png

function f(n) {
    if (n == 1 || n == 2) {
        return 1
    } else {
        return f(n - 1) + f(n - 2)
    }
}
console.log(f(5));
  • 循环数组
let arr = [100, 200, 300, [400, 500, [50, 60, 80, [230, 5500, 80]]]]
let arr1 = []
let sum = 0

function fn(arr) {
    arr.forEach((item, index) => {
        if (item instanceof Array) {
            fn(item)
        } else {
            arr1.push(item)
            sum += item
        }
    })
}
fn(arr)
console.log(arr1);
console.log(sum);