java方法遞歸
一、遞歸演算法基本思路:
Java遞歸演算法是基於Java語言實現的遞歸演算法。遞歸演算法是一種直接或者間接調用自身函數或者方法的演算法。遞歸演算法實質是把問題分解成規模縮小的同類問題的子問題,然後遞歸調用方法表示問題的解。遞歸往往能給我們帶來非常簡潔非常直觀的代碼形式,從而使我們的編碼大大簡化,然而遞歸的思維確實跟我們的常規思維相逆的,通常都是從上而下的思維問題,而遞歸趨勢從下往上的進行思維。
二、遞歸演算法解決問題的特點:
【1】遞歸就是方法里調用自身。
【2】在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口。
【3】遞歸演算法代碼顯得很簡潔,但遞歸演算法解題的運行效率較低。所以不提倡用遞歸設計程序。
【4】在遞歸調用的過程中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等,所以一般不提倡用遞歸演算法設計程序。
【5】在做遞歸演算法的時候,一定把握出口,也就是做遞歸演算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。
三、代碼示例:
publicclassFactorial{
//thisisarecursivefunction
intfact(intn){
if(n==1)return1;
returnfact(n-1)*n;
}}
publicclassTestFactorial{publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Factorialfactorial=newFactorial();
System.out.println("factorial(5)="+factorial.fact(5));
}
}
代碼執行流程圖如下:
此程序中n=5就是程序的出口。
㈡ 用java遞歸方法實現
publicintfun(intn){
if(n==0||n==1)return1;
returnn*fun(n-1);
}
㈢ 在JAVA中什麼是遞歸有什麼用
Java方法遞歸是指在一個方法的內部調用自身的過程,以此類推就是java方法遞歸的理解思想,具體來講就是把規模大的問題轉化為規模小的相似的子問題來解決。在函數實現時,因為解決大問題的方法和解決小問題的方法往往是同一個方法,所以就產生了函數調用它自身的情況。另外這個解決問題的函數必須有明顯的結束條件,這樣就不會產生無限遞歸的情況了。因此,java方法遞歸的兩個條件就是,一通過遞歸調用來縮小問題規模,且新問題與原問題有著相同的形式;二存在一種簡單情境,可以使遞歸在簡單情境下退出。
㈣ JAVA中的遞歸方法
自己調用自己或幾個方法相互調用。
最經典的是求正整數階的演算法:
int fact(int i){
if(i<=1)return 1;
return fact(i-1)*i;
}
多數遞歸方法可以轉換成非遞歸方法。
一般同功能的非遞歸方法,執行效率要優於遞歸方法。但合理的使用遞歸方法,可以使代碼結構更清晰,更有可讀性,從而更方便維護。