题解:最容易理解 | #跳台阶#
跳台阶
https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param number int整型
* @return int整型
*/
function jumpFloor( number ) {
// write code here
if(number <= 1){
return 1;
}
let recordMethod = new Array(number + 1);
recordMethod[0] = 1;
recordMethod[1] = 1;
recordMethod[2] = 2;
for(let i = 3; i < recordMethod.length; i++){
recordMethod[i] = recordMethod[i - 1] + recordMethod[i - 2]
};
return recordMethod[number]
}
module.exports = {
jumpFloor : jumpFloor
};
思路:
死记斐波那契
* 跳上1阶 1种方法: 跳一下1阶
* 跳上2阶 2种方法: 连续跳两下1阶(也可理解为从1层跳1阶), 或则跳一下2阶
* 跳上3阶最后一次 2种方法: 从1 层跳2阶, 或则从 2层跳一下1阶;
* 跳上n阶最后一次 2种方法: 从 n-2层阶跳一下2阶, 或者从n-1层跳一下1阶
则跳上3阶的全部方法 = 跳上1层的方法 + 跳上2层的方法
故跳上n阶的全部方法 = 跳上n-2层的方法 + 跳上n-1层的方法
