跳台阶—2018-6-9

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


思考五分钟

解题思路:
要想上n级台阶,那么必须先到n-2或者n-1阶台阶。
可以设到n阶台阶的函数为f(n).
则,当n>2的时候有,f(n)=f(n-1)+f(n-2)
而f(0)=0,f(1)=1,f(2)=2。

这很类似于Fibonacci函数,使用迭代或者递归都可以完成。
迭代实现:

/*
**targrt目标阶数
**fn:到n阶台阶的方法
*/
public int JumpFloor(int target) {
        if(target==0)
            return 0;
        else if(target==1)
            return 1;
        else {
            int f1=1,f2=2,fn=2;
            for(int i=2;i<target;i++){
                fn=f1+f2;
                f1=f2;
                f2=fn;
            }
            return fn;
        }
    }

递归实现:

    public int JumpFloor(int target) {
        if(target==-1)
            return 0;
        else if(target==1)
            return 1;
        else if(target==2)
            return 2;
        else
            return JumpFloor(target-1)+JumpFloor(target-2);
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在刷一些数据结构的题,发现个很有趣的问题:跳台阶问题。 1. 第一题(引子):输出菲波那切数列的第N项。 斐波...
    MentallyL阅读 2,904评论 1 6
  • You are climbing a stair case. It takes n steps to reach ...
    stevewang阅读 1,507评论 0 3
  • 第一题斐波那契数列 一种是递归方法,也就是fib[i]=fib[i-1]+fib[i-2],此时fib是一个大小是...
    hayes0420阅读 177评论 0 0
  • 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种...
    Utte阅读 498评论 0 0
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-code.h...
    eddy_wiki阅读 9,380评论 0 30