最重要的就是最后一步:如果走一步就需要 f(n-1)种,如果走两步就需要 f(n-2)种
走一个台阶:1种-f(1)
走两个台阶:2种-f(2)
三个台阶:
先走一个台阶f1和最后一次走两个台阶:f(1)
先走二个台阶f2和最后一次走一个台阶:f(2)
f(3)=f(1)+f(2)
四个台阶:
先走三个台阶和最后一次走一个:f(3)
先走两个台阶和最后一次两个台阶:f(2)
f(4)=f(2)+f(3)
n个台阶:f(n)=f(n-1)+f(n-2)
// 递归实现
function step(n) {
let i = 2;
if (n < 1) throw new Error("台阶数不能小于1");
// 边界处理
if (n === 1 || n === i) {
return n;
}
return step(n - 1) + step(n - 2);
}
console.log(step(20));