// 递归的特点总结:
1、自调用,就是在函数里面调用自己
2、最关键的一点,就是一个递归必须明确结束条件,不然就会陷入无穷的死循环
3、缺点,就是消耗大量内存
// 阶乘 n!=n*(n-1)*(n-2).........*2*1
let d = function jiecheng(n) {
if (n <= 1) return 1;
return n * jiecheng(n - 1)
}
// console.log(d(5))
// 斐波那契数列 1 1 2 3 5 8............
let a = function fei(n) {
if (n <= 0) return 0;
if (n <= 2) return 1;
return fei(n - 1) + fei(n - 2)
}
// console.log(a(4))
// 第三:上楼梯问题 上楼梯,可以一次走1/2/3阶楼梯 分析可知上楼梯总得方法是F(n) = F(n-1) + F(n-2) + F(n-3)
function louti(n) {
if (n <= 0) return 0;
if (n <= 1) return 1;
if (n <= 2) return 2;
if (n <= 3) return 4;
return louti(n - 1) + louti(n - 2) + louti(n - 3)
}
// 还有一种情况一次可以走1/2阶 F(n) = F(n-1) + F(n-2)
function louti(n) {
if (n <= 0) return 0;
if (n <= 1) return 1;
if (n <= 2) return 2;
return louti(n - 1) + louti(n - 2)
}
网友评论