Java遞歸演算法是基於Java語言實現的遞歸演算法。遞歸演算法是一種直接或者間接調用自身函數或者方法的演算法。遞歸演算法實質是把問題分解成規模縮小的同類問題的子問題,然後遞歸調用方法表示問題的解。遞歸往往能給我們帶來非常簡潔非常直觀的代碼形式,從而使我們的編碼大大簡化,然而遞歸的思維確實跟我們的常規思維相逆的,通常都是從上而下的思維問題,而遞歸趨勢從下往上的進行思維。
二、遞歸演算法解決問題的特點:
【1】遞歸就是方法里調用自身。
【2】在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口。
【3】遞歸演算法代碼顯得很簡潔,但遞歸演算法解題的運行效率較低。所以不提倡用遞歸設計程序。
【4】在遞歸調用的過程中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等,所以一般不提倡用遞歸演算法設計程序。
【5】在做遞歸演算法的時候,一定把握出口,也就是做遞歸演算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。
三、代碼示例:
代碼執行流程圖如下:
此程序中n=5就是程序的出口。
② 遞歸演算法執行效率比功能相同的非遞歸演算法的執行效率高。是否正確
錯。
遞歸寫起來簡單,但是效率比較低。
③ 在c語言中遞歸和迭代有什麼區別和聯系各自的優缺點是什麼二者分別適合解決什
能力有限,僅知幾點
兩者都是重復某一操作直到滿足條件為止。
不同之處在於,遞歸是函數調用自身,而迭代是使用循環。
某些情況下遞歸更加簡單,可讀性更高,而用循環則十分復雜。如二分法,快速排序等。
遞歸很容易導致棧溢出,導致程序崩潰,而循環不會。
綜上所述,能用循環用循環,遞歸是萬不得已的手段。
④ JAVA中的遞歸方法,求講一下。
自己調用自己或幾個方法相互調用。
最經典的是求正整數階的演算法:
int fact(int i){
if(i<=1)return 1;
return fact(i-1)*i;
}
多數遞歸方法可以轉換成非遞歸方法。
一般同功能的非遞歸方法,執行效率要優於遞歸方法。但合理的使用遞歸方法,可以使代碼結構更清晰,更有可讀性,從而更方便維護。
⑤ 編程遞歸演算法是不是很低效
相對來說,遞歸的效率低,主要是因為遞歸時會反復調用函數(遞歸函數)。
而函數發生調用時,程序會將當前的一些數據存入堆棧中(保存現場),等函數調用結束時,將堆棧中的數據再取出來(恢復現場)。函數調用時,是有開銷的(佔用堆棧資源,佔用CPU時間)。
所以相對來說,遞歸的效率比較低。在可能的情況下,建議將遞歸程序改成迭代模式。
⑥ 遞歸演算法與非遞歸演算法的比較
否,一般而言非遞歸演算法更有效;但很多時候遞歸演算法容易實現,編程簡單。