---------------------- android培訓 、 java培訓、期待與您交流! ----------------------
遞歸 是指在方法調用的過程中調用該方法自身的調用。 一般用在類似Fibonacci函數 樹狀結構的應用程序當中。
例如下面這個例子:求數列 1 ,1,2,3,5,8,13.......第n個數列的值
public class UserTest {
public static void main(String[] args) {
System.out.println(method(6));
}
private static int method(int i) {
if(i == 1||i==2) return 1;
else
return method(i-1)+method(i-2);
}
}
這就是一個簡單的遞歸程序,其調用過程爲:method(6)的 method(i-1)的調用過程:method(6)—method(5)—method(4)—method(3)—method(2),method(2)返回,調用method(1)—method(1)返回—method(3)調用完返回method(4)—調用method(4)的method(2)—method(2)返回—method(4)調用完返回method(5)—調用method(5)的method(3)—method(3)返回—method(5)調用完返回method(6),再執行method(6)的method(i-2)過程,與前面過程類似。最後method(6)調用完返回main()。
這是一個Fibonacci函數 形式遞歸。合理利用遞歸,會使我的程序變得簡潔高效。
當然上述程序也可以用普通方法實現,以下爲實現方式:
首先分析數列規律:第n個數的值爲n-1個數和n-2個數的值的和,所以我們設局部變量num1和num2 儲存這兩個數 numSum儲存他們的和
private static long number(int i){
if(i==1||i==2) return 1;
long num1=1L;
long num2=2L;
long numSum=0;
for(int j =1;j<i-2;j++){
//每次循環,把n-1那個數的值賦給n-2那個數的值,他們的和賦給n-1那個數的值
numSum=num1+num2;
num1=num2;
num2=numSum;
}
return numSum;
}
通過對比,可以發現遞歸方式實現起來簡單很多。
---------------------- android培訓 、java培訓 、期待與您交流! ----------------------
詳細請查看:http://edu.csdn.net/heima