天天看点

剑指offer-chapter2-面试题9-青蛙跳台阶(java)

题目:

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

知识点:菲波那切数列

思路:

假设青蛙跳上n个台阶,那么他有两种跳法

1. 跳一格 剩余 n-1格

2. 跳两格 剩余 n-2格

则剩下的问题变成解决 n-1 格和n-2格台阶有多少种跳法

当n=2时,则跳法有2种 一格一格的条或两格一起跳

当n=1时,则有跳法1种

当n<=0时,则跳法为0种

故该题可看为斐波那契数列的变种

代码:

package problem9;

/**
 * Created by fengyuwusong on 2018/1/30 15:18.
 * 题目描述
 * 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
 * 知识点:菲波那切数列
 * 假设青蛙跳上n个台阶,那么他有两种跳法
 * 1.跳一格  剩余 n-1格
 * 2.跳两格  剩余 n-2格
 * 则剩下的问题变成解决 n-1 格和n-2格台阶有多少种跳法
 * 当n=2时,则跳法有2种 一格一格的条或两格一起跳
 * 当n=1时,则有跳法1种
 * 当n<=0时,则跳法为0种
 * 故该题可看为斐波那契数列的变种
 */
public class Extend {
    public int JumpFloor(int target) {
        if (target <= )
            return ;
        else if (target == )
            return ;
        else if (target == )
            return ;
        int l = , ll = , sum = ;
        for (int i = ; i <= target; i++) {
            sum = l + ll;
            l = ll;
            ll = sum;
        }
        return sum;
    }
}