您的位置:首页 > 职场人生

剑指offer之面试题9-3:变态跳台阶

2016-04-18 15:06 302 查看
题目描述

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

思路:用数学归纳的思想,分析得出规律。

台阶数为1,先跳一阶,剩下的跳法为f(1-1)=f(0)。

台阶数为2,先跳一阶,剩下的跳法为f(2-1)=f(1);先跳2阶,剩下的跳法为f(2-2)=f(0),由加法原理,f(2)=f(1)+f(0)

……

台阶数为n,先跳一阶,剩下的跳法为f(n-1),…,先跳n-1阶剩下的跳法为f(1),先跳n阶,剩下的跳法为f(0),由加法原理,f(n)=f(n-1)+…+f(1)+f(0)=2*f(n-1)

经过以上分析,可得到如下代码,牛客网成功提交:

import java.util.Arrays;
public class Solution {
public static int JumpFloorII(int target) {
int[] result={1,1,2};
result=Arrays.copyOf(result, target+1);
if(target<=2)
return result[target];
for(int i=3;i<=target;i++){
int temp=0;
for(int j=0;j<i;j++){
temp=temp+result[j];
}
//System.out.println(temp);
result[i]=temp;
}
return result[target];

}
public static void main(String[] args){
int target=10;
System.out.println(JumpFloorII(target));
}
}


递归方法

import java.util.Arrays;
public class Solution {
public static int JumpFloorII(int target) {
if(target <= 0) return -1;
if(target == 1) return 1;
return 2 * JumpFloorII(target - 1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: