开胃菜
1.n有n个台阶,一次只能迈一个台阶或者两个台阶,问有多少种迈台阶的方法?
public int fab(int n){ if(n==0||n==1){ return 1; } return fab(n-1)+fab(n-2); }
2.n利用四种方式求一个数的阶乘
/** * 迭代法 */ public int factorialIteration(int m){ int fact=1; for(int i=2;i<=m;i++){ fact*=i; } return fact;
}
/** * 下降递归策略 * */ public int factorialRecurison(int m){ if(m==1) return 1; return m*factorialRecurison(m-1); }
/** * 上升递归策略 */ public int product2(int m,int n){ if(m==n) return n; else{ return m*product2(m+1, n); } }
/** * 等分区间求阶乘 */ public static int product(int m,int n) { int middle; if(m==n) return m; else{ middle=(m+n)/2; return product(m, middle)*product(middle+1, n); } }
后两种方法不理解其中的意思,请学友们给指点一下。