【Offer】[10-2] 【青蛙跳阶问题】

题目描述

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

思路分析

  1. 其实就是斐波那契数列,
  2. f(1)=1 f(2) =2 ,n= 3时,两种情况:
    • 青蛙先跳一个台阶,后面还有两个台阶,所以跳法就为f(2),
    • 青蛙先跳两个台阶,后面还有1个台阶,所以跳法就为f(1),
    • 综上 n=3 时 跳法为f(1)+f(2)

Java代码

public class Offer010_2 {
    public static void main(String[] args) {
        
    }
    public static int JumpFloor(int target) {
        return Solution1(target);
    }

    /**
     * 解法一 斐波那契数列 非递归
     * @param target
     * @return
     */
    private static int Solution1(int target) {
        if(target == 1) {
            return 1;
        }
        if(target ==2) {
            return 2;
        }
        int fm2 = 1;
        int fm1 = 2;
        int fN = 0;
        for(int i=3;i<=target;i++) {
            fN =fm2+fm1;
            fm2 = fm1;
            fm1 = fN;
        }
        return fN;
    }

}

代码链接

剑指Offer代码-Java

原文地址:https://www.cnblogs.com/haoworld/p/offer102-qing-wa-tiao-jie-wen-ti.html