青蛙跳台阶

题目描述

一只青蛙一次可以跳上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
}

 

不积跬步无以至千里
原文地址:https://www.cnblogs.com/lyt0207/p/12522572.html