js 递归函数

递归函数的概念

递归函数,就是函数自己调用自己

// 这就是一个递归函数
function fn(){
    console.log(1)
    fn()
}
fn()

但是这样他会进入死循环,递归函数必须要有一个次数限定

让他满足某些条件后return出来,或者不再调用自己

// 当num大于5时,不再递归
function fn(num){
    if(num > 5) return
    console.log(num)
    fn(++m)
}
fn(1)

我们可以把他看做是一个循环,但是我们可以不知道具体的循环次数

按规律求数字

// 求 1,2,3,5,8,13... 的第n个数是多少(斐波那契数列)
function getNum(n){
    if(n === 2) return 2
    if(n === 1) return 1
    return getNum(n-1) + getNum(n-2)
}
getNum(5) // 8

这个例子中并不确定循环的次数,但是我们知道后一个数是前两个数相加所得

所以我们可以从结果来逆推,现在来解析一下

n=5时,返回第4个数字 + 第3个数字

n=4时,返回第3个数字 + 第2个数字

n=3时,返回第2个数字 + 第1个数字

n=2时,返回数字2

n=1时,返回数字1

所以第5个数的计算过程为:第4个数字(1+2+2)加第3个数字(1+2),结果为8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值