问题
问题:青蛙面对一个台阶时跳一次可以上去,面对两个台阶可以选择一次跳两个或者每次跳一个跳两次,面对三个台阶同样可以一次跳两个或跳一个跳三次…,青蛙可以一次跳一个台阶或跳两个台阶,问:当有N个台阶时有多少中跳法?
首先总结规律如下:
一个台阶:1种跳法;
两个台阶:2种跳法;
三个台阶:3种跳法;
四个台阶:5种跳法;
五个台阶:8种跳法;
。。。。。
N个台阶的跳法为(N-1)个台阶跳法+(N-2)个台阶的跳法;
代码:
通过递归实现:`
static int frogjump(int n){
if(n ==1){
return 1;
}else if(n ==2){
return 2;
}else{
return frogjump(n-1)+frogjump(n-2);
}
}
通过循环实现:
static int frogjump2(int n ){
if(n==1){
return 1;
}else if(n==2){
return 2;
}else{
int a = 1;
int b = 2;
int tmp = 0;
for(int i=3;i<=n;i++){
tmp = a+b;
a = b;
b = tmp;
}
return tmp;
}