1.跳台阶:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:斐波拉契数序列,初始条件n=1:只能一种方法,n=2:两种 ,对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以
F(n) = F(n-1) + F(n-2)
package jianzhi_offer;
public class tiaotaijie {
public static void main(String[] args) {
// TODO Auto-generated method stub
int target = 5;
int result = rectCover(target);
System.out.println(result);
}
public static int rectCover(int target){
if(target < 1) {
return 0;
}else if(target == 1 || target == 2) {
return target;
}
return rectCover(target-1)+rectCover(target-2);
}
}
**
2.变态跳台阶
**
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
package jianzhi_offer;
public class biantai_taitaijie {
public static void main(String[] args) {
// TODO Auto-generated method stub
int target = 5;
int result = rectCover(target);
System.out.println(result);
}
public static int rectCover(int target) {
int res = 1;
for(int i=1;i<=target-1;i++) {
res= res * 2;
}
return res;
}
}