青蛙跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:
青蛙跳1级台阶有1种跳法,2级台阶有2种跳法
3级台阶时可以从1级台阶跳上来也可以从2级台阶跳上来,即等于1级台阶的跳法加2级台阶的跳法
因此n级台阶共有n-2级台阶跳法数+n-1级台阶跳法数;
因此这道题可以用递归来解,但是时间复杂度和空间复杂度会很高
if(number == 1 || number == 2) {
return number
}else {
return jumpFloor(number-1)+jumpFloor(number-2)
}
因此我们可以用迭代法来解
function jumpFloor(number){
if(number == 1 || number == 2) {
return number
}
let currFloor = 0 //当前台阶
let preFloor = 2 //当前台阶的前一个台阶跳法
let prePreFloor = 1 //当前台阶前一个的前一个台阶跳法
for (let i = 3; i <= number; i++) {
currFloor = preFloor+prePreFloor
prePreFloor = preFloor
preFloor = currFloor
}
return currFloor
}
不积跬步无以至千里