J2SE學(xué)習(xí)筆記(1)――遞歸函數(shù)
來源:程序員人生 發(fā)布時間:2015-01-06 08:23:33 閱讀次數(shù):3136次
甚么是遞歸函數(shù)
遞歸函數(shù)即自調(diào)用函數(shù),在函數(shù)體內(nèi)部直接或間接地自己調(diào)用自己,即函數(shù)的嵌套調(diào)用是函數(shù)本身。
實(shí)例分析
后1個數(shù)是前兩個數(shù)之和,求第40個數(shù)
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⑵);
}
}
}
運(yùn)行結(jié)果:
下面介紹1下該函數(shù)的調(diào)用進(jìn)程,為了簡單起見,以求f(5)為例
非遞歸函數(shù)實(shí)現(xiàn)上述功能
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;
}
}
運(yùn)行結(jié)果

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