一、递归计算测试
public int f1(int n){
if(n==0){
return 1;
}
if(n<0){
return 0;
}
return f1(n-1)+f1(n-2)+f1(n-3);
}.net
二、动态规划递归
public String f2(int n){
if(n < 1) return "0";
if(n == 1) return "1";
if(n == 2) return "2";
if(n == 3) return "4";
/* 若是是四个台阶,上法有7种,1-1-1-1,2-1-1,1-2-1,1-1-2,2-2,3-1,1-3
* 可知 方法是前三种状况方法的总和 7=1+2+4
* 经过这个规律进行计算
*/
String [] step = new String[n];
step[0] = "1";
step[1] = "2";
step[2] = "4";
if(n<=3){
return step[n-1];
}
for(int i=3;i<n;i++){
step[i] = new BigDecimal(step[i-3]).add(new BigDecimal(step[i-2]).add(new BigDecimal(step[i-1]))).toString();
}
return step[n-1];
}ci
3 测试get
@Test
public void testGo(){
int r1 = f1(35); //到35个台阶已经很慢了
System.out.println(r1);
String r2 = f2(35);
System.out.println(r2);
}class