递归函数的概念
递归函数,就是函数自己调用自己
// 这就是一个递归函数
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