javascript的递归函数

一、什么是递归?

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

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

二、递归应用例子

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

function fn(n) {
    if (n === 1) {
        return 1;
    }
    return n * fn(n - 1);
}
console.log(fn(3));
console.log(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);
}
console.log(fb(3)); // fb(1) + fb(2)
console.log(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)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值