用斐波那契數列來說明遞歸和迭代的區別

遞歸:自己調用自己

迭代:反覆替換的意思

遞歸與迭代都是基於控制結構:迭代用重複結構,而遞歸用選擇結構。
遞歸與迭代都涉及重複:迭代顯式使用重複結構,而遞歸通過重複函數調用實現重複。
遞歸與迭代都涉及終止測試:迭代在循環條件失敗時終止,遞歸在遇到基本情況時終止。
使用計數器控制重複的迭代和遞歸都逐漸到達終止點:迭代一直修改計數器,直到計數器值使循環條件失敗;遞歸不斷產生最初問題的簡化副本,直到達到基本情況。迭代和遞歸過程都可以無限進行:如果循環條件測試永遠不變成false,則迭代發生無限循環;如果遞歸永遠無法回推到基本情況,則發生無窮遞歸。
遞歸函數是通過調用函數自身來完成任務,而且在每次調用自身時減少任務量。而迭代是循環的一種形式,這種循環不是由用戶輸入而控制,每次迭代步驟都必須將剩餘的任務減少;也就是說,循環的每一步都必須執行一個有限的過程,並留下較少的步驟。

程序設計:


public class Fibonacci1 {

	/**遞歸求解
	 * @param args
	 * a0=1
	 * a1=1
	 * an=a(n-1)+a(n-2)
	 */
	//遞歸求解
	public static long Fuc(int n){
		if (n==0|n==1) {
			return 1;
		}
		else {
			return Fuc(n-1)+Fuc(n-2);
		}
		
	}
	//迭代求解
	public static long Fuc2(int n){
		int head=1;int tail=1;int result=0;
		if (n>1) {
			for (int i = 2; i <= n; i++) {
				result=head+tail;
				head=tail;
				tail=result;
			}
		}
		else {
			result=1;
		}
		
		return result;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println(Fuc(5));
		System.out.println(Fuc2(5));
		
	}

}


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