淺談遞歸(遞龜)

什麼是遞歸

遞歸就是在一個大型複雜的問題上,用方法本身調用本身方法去解決問題從而大大減少代碼量。當然這種問題需要有自身的“特殊性”,“規律性”,這類問題往往解決地思路基本上是一致的,所有可以重複調用方法本身,在其臨界條件到達時調用結束,此爲終止條件。

階乘遞歸解決

小編想說的是這種數學問題的階乘實在不難,只需要找到規律和邊界條件即可。
階乘的規律爲:
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);
	}
}

寫在最後

本文爲小編個人理解所作,如有問題請聯繫小編進行更改或刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章