【递归】【打卡67天】《剑指Offer》2刷:JZ69 跳台阶

1.题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

数据范围:0 \leq n \leq 400≤n≤40

要求:时间复杂度:O(n)O(n) ,空间复杂度: O(1)O(1)

 2.算法分析

target=3的  1+1+1;1+2;2+1;    3=1+2
target=4    1+1+1+1;1+1+2;1+2+1;2+1+1;2+2;  5=2+3

找通项公式:f(n) = f(n-1)+f(n-2)

3.代码实现

public class Solution {
    public int jumpFloor(int target) {
        if(target <= 0){
            return 0;
        }else if(target == 1){
            return 1;
        }else if(target == 2){
            return 2;
        }else{
            // target=3的  1+1+1;1+2;2+1;    3=1+2
            // target=4    1+1+1+1;1+1+2;1+2+1;2+1+1;2+2;  5=2+3
            
            // f(n) = f(n-1)+f(n-2)
            return jumpFloor(target-1) + jumpFloor(target -2);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Sunshineoe/article/details/121132862
今日推荐