3-22 n个台阶 一次只能走 一步或者两步,问有多少种走法

最重要的就是最后一步:如果走一步就需要 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));
posted @ 2022-03-22 23:13  林见夕  阅读(205)  评论(0编辑  收藏  举报