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

码农小汪-剑指Offer之2- 变态跳台阶

2016-03-30 23:31 302 查看
之前写在印象笔记的复制过来

题目描述:

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

题解:

用Fiber(n)表示青蛙跳上n级台阶的跳法数,

青蛙一次性跳上n个台阶的跳法数为1,Fib(0)=1;

当n=1,一种跳法Fib(1-1)=1;

当n=2,Fiber(2)=Fiber(2-1)+Fiber(2-2);

当n=3,Fiber(3)=Fib(3-1)+Fib(3-2)+Fib(3-3);

当n=n时,Fiber(n)=Fib(n-1)+Fib(n-2)+….Fib(0)

又因Fiber(n-1)=Fib(n-2)+Fib(n-3)……Fib(0);

两者相减,Fiber(n)=2*Fiber(n-1)

如此科学的解决问题,不错哦!

package JianzhiOffer;

/**

* 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。

* 求该青蛙跳上一个n级的台阶总共有多少种跳法。

* @author JetWang

*

*/

public class Sloution2 {

public int JumpFloorII(int target) {
if( target<0){
return -1;
}else if(target ==1){
return 1;
}else{
return 2*JumpFloorII(target -1);
}

}

public static void main(String[] args) {
// TODO Auto-generated method stub
Sloution2 testSloution2=new Sloution2();
System. out.println(testSloution2 .JumpFloorII(3));

}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: