跳台阶问题
package mypack3;
public class jumpFloor {
//跳台阶问题
//我们先想一想,为什么计算机适合做这样的问题
//一一只青蛙可以跳上一级台阶,也可以跳上两级台阶,求青蛙跳上n级台阶有多少种跳法
/*
* 如果有两种跳法,1阶或者2阶,那么假定第一次跳的是1阶
* 那么剩下的就是n-1个台阶,跳法是f(n-1)假定第一次跳的是2阶,那么剩下的台阶数为n-2,跳法是f(n-2)
* 由a,b假设可以得出总的跳法是f(n)=f(n-1)+f(n-2)
* 然后通过实际情况可以得出
* 只有1阶的时候f(1)=1,只有两阶的时候f(2)=2 f(3)=3,f(4)=5
* f(n)=f(n-1)+f(n-2)
* 举个例子
* 6个台阶
* 一步,有多少种方法跳到5 就有多少种方法跳到6
* 两步,有多少种方法跳到4,就有多少种方法跳到6
* 所以f(6)=f(5)+f(4)*/
int jumpFloor(int number){
if(number<=0){
return 0;
}
if(number==1){
return 1;
}
if(number==2){
return 2;
}
int frist=1,second=2,third=0;
for (int i = 3; i <=number ; i++) {
third=frist+second;
frist=second;
second=third;
}
return third;
}
public static void main(String[] args) {
jumpFloor result=new jumpFloor();
int i = result.jumpFloor(5);
System.out.println(i);
}
}
总结:所以f(6)=f(5)+f(4),实际上转换为求斐波那契数列