剑指 Offer 10- II. 青蛙跳台阶问题

题目链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/

本文采用JavaScript进行解题:一、斐波那契数列(迭代)

 

一、斐波那契数列(迭代)

 

 1 /**
 2  * @param {number} n
 3  * @return {number}
 4  * 青蛙跳台阶:一次可以跳上1级台阶(小跳)或2级台阶(大跳)
 5  * 也就是说青蛙到达n级台阶的最后一跳可能小跳也可能是大跳;
 6  * 如果n == 1,只有一种可能:1小跳到达;
 7  * 如果n == 2,有两种可能:2次小跳到达或1次大跳到达;
 8  * 以上述情况作为基础:
 9  * 当n == 3时,
10  *  若最后一跳为小跳,在进行最后一跳之前蛙在n-1级台阶(也就是2级台阶);
11  *  若最后一跳为大跳,在进行最后一跳之前蛙在n-2级台阶(也就是1级台阶);
12  *  已知:2级台阶有2种可能,1级台阶有1种可能;
13  *  所以:n == 3时,存在2+1种跳法。
14  * 其它类推。
15  */
16 var numWays = function (n) {
17   if(n < 2) return 1;
18   const MODE = 1000000007;
19   let j = 1, k = 1, l;
20   for(let i = 2; i <= n; i++) {
21     l = (j + k) % MODE;
22     j = k;
23     k = l;
24   }
25   return l;
26 };

 

posted @ 2021-11-29 14:57  不乏理想的三师弟  阅读(32)  评论(0)    收藏  举报