剑指Offer(八)跳台阶(Java版 )

一、题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

二、方法一:递归

思路:斐波拉契数序列,初始条件n=1:只能一种方法,n=2:两种
对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以
F(n) = F(n-1) + F(n-2)

public class Solution {
    public int JumpFloor(int target) {
            if (target <= 0) {
                return -1;
            } else if (target == 1) {
                return 1;
            } else if (target ==2) {
                return 2;
            } else {
                return  JumpFloor(target-1)+JumpFloor(target-2);
            }
        }
}

运行结果:
这里写图片描述

三、方法二:循环

public class Solution {
    public int JumpFloor(int target) {
         if (target <= 0) {
               return -1;
        } 
        if (target == 1) {
                return 1;
        } 
        if (target ==2) {
                return 2;
         } 
        int pre = 1;
        int now = 2;
        int result = 0;
        for( int i = 3;i <= target;i++ ){
            result = pre + now;
            pre = now;
            now = result;
        }  
        return result;
    }
}

运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41835916/article/details/80662945