J2SE學習筆記(1)――遞歸函數
來源:程序員人生 發布時間:2015-01-06 08:23:33 閱讀次數:3144次
甚么是遞歸函數
遞歸函數即自調用函數,在函數體內部直接或間接地自己調用自己,即函數的嵌套調用是函數本身。
實例分析
后1個數是前兩個數之和,求第40個數
public class Fab2 {
public static void main(String arg[]) {
System.out.println(f(40));
}
public static int f(int n){
if(n==1 || n==2){
return 1;
} else {
return f(n⑴) + f(n⑵);
}
}
}
運行結果:
下面介紹1下該函數的調用進程,為了簡單起見,以求f(5)為例
非遞歸函數實現上述功能
public class Fab{
public static void main(String[] args){
System.out.println(f(5));
}
public static long f(int index){
if (index < 1){
System.out.println("wrrong");
return ⑴;
}
if (index == 1 || index == 2){
return 1;
}
long f1 = 1;
long f2 = 1;
long f = 0;
for (int i = 0; i <index⑵; i++){
f = f1 + f2;
f1 = f2;
f2 = f;
}
return f;
}
}
運行結果

遞歸函數的特點
(1)原始問題轉化成解決方法相同的新問題
(2)新問題的范圍比原始問題小
(3)新問題又可以轉化為解決方法相同的范圍更小的新問題,直接至終止條件為止
遞歸函數條件
(1)存在遞歸結束條件及結束時的值
(2)能用遞歸情勢表示,且遞歸向終止條件發展
遞歸反應的思惟
即大事化小,小事化了。
遞歸函數與非遞歸函數的比較
(1)遞歸的目的是簡化程序設計,使程序易讀。
但遞歸增加了系統開消。 時間上, 履行調用與返回的額外工作要占用CPU時間。空間上,隨著每遞歸1次,棧
內存就多占用1截。
(2)相應的非遞歸函數雖然效力高,但卻比較難編程,而且相對來講可讀性差。
現代程序設計的目標主要是可讀性好。隨著計算機硬件性能的不斷提高,程序在更多的場合優先斟酌可讀而不是
高效,所以,鼓勵用遞歸函數實現程序思想。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈