一、求阶乘
需求:封装一个方法,计算正整数num的阶乘(递归阶乘)
什么是阶乘(factorial):所有小于及等于该数的正整数的积
function f(num){
if(num<=1){
return 1;
}
return num*f(num-1)
}
let y = f(5);
console.log(y);//120
二、求斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、用数学的思想就是:f(n)=f(n-1)+f(n-2)
function fun(x) {
if (x == 1 || x == 2) {
return 1;
}
return fun(x - 1) + fun(x - 2);
}
let x = fun(5);
console.log(x);//5
总结:
递归两个要素
1.递归的边界——找到出口,在什么情况下跳出递归
2.递归的逻辑——找到入口,什么情况下重复调用自己,调用自己做什么