正常跳台阶:
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)
解决思路:
n=1时,则只有一种跳法(1)
n=2时,跳法为(1),(2) 2种跳法,
n=3时,跳法为(1,1,1),(1,2),(2,1) 3种跳法
n=4时,跳法为(1,1,1,1),(2,2),(1,2,1),(1,1,2),(2,1,1) 5种跳法
n=5时,跳法为(1,1,1,1,1),(1,2,1,1),(2,1,1,1),(1,1,2,1),(1,1,1,2),(1,2,2),(1,2,1),(2,1,2) 8种跳法
....
根据数学归纳法,可以得出当n>2时,后边的每一项等于其前两项之和
程序代码:
public class Solution {
public int JumpFloor(int target) {
if(target<=0) return 0;
if(target==1) return 1;
if(target==2) return 2;
int first=1;
int second=2;
int result=0;
for(int i=2;i<target;i++){
result=first+second;
first=second;
second=result;
}
return result;
}
}
变态跳台阶:
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级......它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法
设计思路同上
代码:
public class Solution {
public int JumpFloorII(int target) {
if(target<=0){
return 0;
}
if(target==1){
return 1;
}
int first =1;
int second=0;
for(int i=2;i<=target;i++){
second=2*first;
first=second;
}
return second;
}
}