javascript的递归函数

时间:2025-05-09 07:22:56

一、什么是递归?

递归:如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。(函数内部自己调用自己)

注意:递归函数的作用和循环效果一样,由于递归很容易发生“栈溢出”错误,所有必须要加退出条件return。

二、递归应用例子

1、利用递归求1~n的阶乘(阶乘:n! 也就是1*2*3*...n

function fn(n) {
    if (n === 1) {
        return 1;
    }
    return n * fn(n - 1);
}
(fn(3));
(fn(4));
// 详细思路 假如用户输入的是3
//return  3 * fn(2)
//return  3 * (2 * fn(1))
//return  3 * (2 * 1)
//return  3 * (2)
//return  6

2、利用递归求斐波那契数列(斐波那契:前两项相加等于后一项的和,1、1、2、3、5、8、13、21...

// 用户输入一个数字 n 就可以求出 这个数字对应的兔子序列值
// 需要知道 n 的前面两项(n-1 n-2)就可以计算出 n 对应的序列值
function fb(n) {
    if (n === 1 || n === 2) {
        return 1;
    }
    return fb(n - 1) + fb(n - 2);
}
(fb(3)); // fb(1) + fb(2)
(fb(6));
// fb(4) + fb(5)
// => fb(2) + fb(3) + fb(3) + fb(4)
// => fb(2) + fb(1) + fb(2) + fb(1) + fb(2) + fb (2) + fb(3)
// => fb(2) + fb(1) + fb(2) + fb(1) + fb(2) + fb (2) + fb(1) + fb(2)