什麼是遞歸
遞歸就是在一個大型複雜的問題上,用方法本身調用本身方法去解決問題從而大大減少代碼量。當然這種問題需要有自身的“特殊性”,“規律性”,這類問題往往解決地思路基本上是一致的,所有可以重複調用方法本身,在其臨界條件到達時調用結束,此爲終止條件。
階乘遞歸解決
小編想說的是這種數學問題的階乘實在不難,只需要找到規律和邊界條件即可。
階乘的規律爲:
n!=n*(n-1)(n-2)…321 ( n!=n(n-1)! n爲整數)
(很容易發現當n=0時,該公式不成立,因此規定0!=1.)即當n=0時爲邊界條件。
public static long jc(long num){
if(n<0){
return -1;//報出-1異常
}
if(num==0){
return 1;
}else{
return num*jc(num-1);
}
}
斐波那契數列遞歸解決
斐波那契數列:1,1,2,3,5,8,13…
規律:f(x) = f(x-1) + f(x-2);(n>2 n爲正整數)
後一個數是前兩個數之和,當n=1,2時都爲1即爲邊界條件。
public static long fbnq(long n){
if(n<=0){
return -1;//報出-1異常
}
if(n<=2){
return 1;
}else{
return fbnq(n-1) + fbnq(n-2);
}
}
寫在最後
本文爲小編個人理解所作,如有問題請聯繫小編進行更改或刪除。