遞歸:自己調用自己
迭代:反覆替換的意思
遞歸與迭代都是基於控制結構:迭代用重複結構,而遞歸用選擇結構。
遞歸與迭代都涉及重複:迭代顯式使用重複結構,而遞歸通過重複函數調用實現重複。
遞歸與迭代都涉及終止測試:迭代在循環條件失敗時終止,遞歸在遇到基本情況時終止。
使用計數器控制重複的迭代和遞歸都逐漸到達終止點:迭代一直修改計數器,直到計數器值使循環條件失敗;遞歸不斷產生最初問題的簡化副本,直到達到基本情況。迭代和遞歸過程都可以無限進行:如果循環條件測試永遠不變成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));
}
}