变态跳台阶

来源:互联网 发布:Sql中not in的效率 编辑:程序博客网 时间:2024/04/30 02:35

题目描述

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

题目解析:

首先不得不强调,这只青蛙很变态,居然可以想跳多少跳多少,其次我们同样可以将青蛙跳n级台阶的情况视为Fn,当青蛙选择第一次跳1级的时候就剩下n-1级的跳法,以此类推,Fn = Fn-1 + Fn-2 + ... + F2 + F1。

解法如下:

/**     * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。     * 求该青蛙跳上一个n级的台阶总共有多少种跳法。     * 对斐波那契数列求和     * 不难得到Fn = 2 ^ (n - 1)     * @param target     */    public int JumpFloorII(int target) {        int n = 4;        int n_1 = 2;        int sum = 1;        if (target <= 0){            return 0;        }else if (target <= 2){            return target;        }else {            for (int i = 3; i <= target; i++) {                n = n_1 + sum + 1;                sum += n_1;                n_1 = n;            }            return n;        }    }


0 0
原创粉丝点击