一、遞歸計算測試
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