剑指offer:跳台阶

来源:互联网 发布:原生js实现todo list 编辑:程序博客网 时间:2024/06/17 16:28

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:台阶数分别为0,1,2,3,4,5跳法分别为:0,1,2,3,5,8,因此,除了1,2阶台阶,其他的符合菲波拉契数列

方法1:递归法

【运行时间:556ms  占用内存:8536k】
public class Solution {    public int JumpFloor(int target) {if(target==0)return 0;        else if(target==1)return 1;        else if(target==2)return 2;        else            return JumpFloor(target-1)+JumpFloor(target-2);    }}

方法2:动态规划

【运行时间:13ms  占用内存:8080k】
public class Solution {    public int JumpFloor(int target) {if(target==0)return 0;        if(target==1)return 1;        if(target==2)return 2;        int result=0;        int n1=1;        int n2=2;        for(int i=3;i<=target;i++){            result=n1+n2;            n1=n2;            n2=result;        }        return result;    }}