美文网首页
面试题Fibonacci数列:一个台阶总共有n级,如果一次可以跳

面试题Fibonacci数列:一个台阶总共有n级,如果一次可以跳

作者: A_Coder | 来源:发表于2016-10-12 14:11 被阅读0次

思路:

  • 如果只有1 级台阶,只有一种跳法;
    如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级;另外一种就是一次跳2 级。
    如果有3级台阶,那就有4种跳的方法:一种是分3次跳,每次跳1级;另一种是一次跳1级,一次跳2级(调换过来也是一种);另一种是一次就跳3级;

  • 一般情况:把n 级台阶时的跳法看成是n 的函数,记为f(n)。
    当n>3 时,第一次跳的时候就有3种不同的选择:

    • 一种是第一次只跳1 级,此时跳法数目等于后面剩下的n-1 级台阶的跳法数目,即为f(n-1);
    • 另外一种选择是第一次跳2 级,此时跳法数目等于后面剩下的n-2 级台阶的跳法数目,即为f(n-2);
    • 另外一种选择是第一次跳3 级,此时跳法数目等于后面剩下的n-3 级台阶的跳法数目,即为f(n-3)。
  • 因此n 级台阶时的不同跳法的总数f(n) = f(n-1) + f(n-2) + f(n-3)。
    时间复杂度:O(n)

public class Test {
    public static void main(String[] args) {
        System.out.println(jump(4));
    }

    private static int jump(int step) {
        // TODO Auto-generated method stub
        if(step <= 0) {
            return 0;
        }
        if(step == 1 || step == 2) {
            return step;
        }
        if(step == 3) {
            return step + 1;    //包括自身
        }
        return (jump(step - 1) + jump(step - 2) + jump(step - 3));
    }
}

输出结果是:7

相关文章

  • 跳台阶问题

    跳台阶问题 题目描述: 一个台阶总共有 n 级,如果一次可以跳 1 级,也可以跳 2 级。求总共有多少种跳法,并分...

  • 跳台阶,生小兔(斐波那契数列)

    题目描述: 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法。分析:台阶数 1 2 3 4...

  • 算法

    1、爬楼梯问题 一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少种跳法。 如果只有1 级台...

  • 6-10题

    6、跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。跟斐波那契数列...

  • 面试题Fibonacci数列:一个台阶总共有n级,如果一次可以跳

    思路: 如果只有1 级台阶,只有一种跳法;如果有2 级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1 级;另...

  • Leetcode climbing stairs

    爬楼梯问题,一次只能爬1阶,或2阶。问爬n阶台阶总共有多少种爬法。 是一个fibonacci数列。1级台阶1种,2...

  • 10-斐波那契数列、青蛙跳台

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

  • 剑指offer习题---跳台阶

    一只?一次可以跳上1级台阶,也可以跳上2级。求该?跳上一个n级台阶总共有多少种跳法 对于N级台阶,可以从N-1 和...

  • 2019-08-04-青蛙跳台阶问题

    问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法? 分析 如果只...

  • 【前端】剑指offer题解每日一更

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

网友评论

      本文标题:面试题Fibonacci数列:一个台阶总共有n级,如果一次可以跳

      本文链接:https://www.haomeiwen.com/subject/kxibyttx.html