更新時間:2019-12-17 16:46:56 來源:動力節(jié)點 瀏覽2453次
程序調(diào)用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設(shè)計語言中廣泛應(yīng)用。但是如果沒終止條件會造成死循環(huán),所以遞歸代碼里要有結(jié)束自調(diào)自的條件。接下來通過一個案例來學(xué)習(xí)如何使用遞歸算法計算自然數(shù)之和,如例Example1.java。
public class Example1 {
public static void main(String[] args) {
int sum=getsum(4); //調(diào)用遞歸方法,獲得1~4的和
System.out.println("sum="+sum); //打印結(jié)果
}
//下面的方法使用遞歸實現(xiàn)求1~n的和
public static int getsum(int n) {
if(n==1){
//滿足條件,遞歸結(jié)束
return 1;
}
int temp=getSum(n-1);
return temp+n;
}
}
運行結(jié)果為:
sun = 10
Example1.java中,定義了一個 getSum()方法用于計算1~n之間自然數(shù)之和。例程中的12行代碼相當(dāng)于在 getSum()方法的內(nèi)部調(diào)用了自身,這就是方法的遞歸,整個遞歸過在n==1時結(jié)束。整個遞歸過程中 getsum()方法被調(diào)用了4次,每次調(diào)用時,n的值都會遞減。當(dāng)n的值為1時,所有遞歸調(diào)用的方法都會以相反的順序相繼結(jié)束,所有的返回值會進行累加,最終得到結(jié)果10。
使用遞歸時需要注意的問題。
【1】遞歸就是方法里調(diào)用自身。
【2】在使用遞歸策略時,必須有一個明確的遞歸結(jié)束條件,稱為遞歸出口。
【3】遞歸算法代碼顯得很簡潔,但遞歸算法解題的運行效率較低。所以不提倡用遞歸設(shè)計程序。
【4】在遞歸調(diào)用的過程中系統(tǒng)為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數(shù)過多容易造成棧溢出等,所以一般不提倡用遞歸算法設(shè)計程序。
【5】在做遞歸算法的時候,一定把握出口,也就是做遞歸算法必須要有一個明確的遞歸結(jié)束條件。這一點是非常重要的。其實這個出口就是一個條件,當(dāng)滿足了這個條件的時候我們就不再遞歸了。
以上就是動力節(jié)點Java培訓(xùn)機構(gòu)小編介紹的“Java培訓(xùn)教程:遞歸的含義及用法”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
Java全套自學(xué)資料
Java自學(xué)視頻教程(免費下載學(xué)習(xí)):http://m.ilovecolors.com.cn/video.html
Java技術(shù)教程:http://m.ilovecolors.com.cn/tutorial/
Spring視頻教程(免費下載學(xué)習(xí)):http://m.ilovecolors.com.cn/v38/
相關(guān)文章
零基礎(chǔ)怎么自學(xué)Java,完整版Java學(xué)習(xí)路線圖
你還在糾結(jié)學(xué)Java,是自學(xué)還是去培訓(xùn)班嗎
相關(guān)閱讀