經典演算法 總結之遞迴演算法

2022-09-14 08:54:12 字數 882 閱讀 5753

如題:

遞迴函式往往可以簡化我們的**,尤其是對樹的遍歷和利用回溯演算法寫**的時候,但是遞迴函式的返回值往往是困擾我們的。

總體來說,我們先要理解函式的呼叫過程,函式呼叫過程會用棧來儲存函式的返回值和過程,而遞迴函式就是呼叫自身函式的過程,所以也是用棧儲存,這樣就比較容易理解了。

下面一段**可以幫助大家理解遞迴函式的返回值。

package

test;

public

class

recursionvaluereturn

else

system.out.print(" "+i);

return

i;

}public

static

void

main(string args)

}

下面是程式的輸出結果截圖.

由輸出和函式的返回結果可以看出,遞迴函式是用棧儲存函式返回值和中間過程,每次返回棧頂的結果(包括中間的輸出值和返回值),而遞迴函式最終的返回值的是棧底的值,也就是遞迴函式第一次呼叫時的返回值.

下面是壓入棧過程的示意圖。

優劣:由於遞迴引起一系列的函式呼叫,並且可能會有一系列的重複計算,遞迴演算法的執行效率相對較低。當某個遞迴演算法能較方便地轉換成遞推演算法時,通常按遞推演算法編寫程式。例如上例計算斐波那契數列的第n項的函式fib(n)應採用遞推演算法,即從斐波那契數列的前兩項出發,逐次由前兩項計算出下一項,直至計算出要求的第n項。

經典演算法之遞迴演算法

前言何為遞迴?通俗理解就是在滿足某一條件的基礎上,重複執行某一 塊,直到不符合執行的條件為止。在開發過程中,很多場景會運用遞迴演算法來解決實際專案需求 但是遞迴有著最為致命的缺點,如果使用不慎,會使專案一直重複執行遞迴函式,直到系統丟擲stack over flow,所以在運用遞迴的時候,要慎之又慎...

經典演算法之遞迴(Recursion)

1 遞迴的定義 遞迴 你開啟面前這扇門,看到屋裡面還有一扇門 這門可能跟前面開啟的門一樣大小 靜 也可能門小了些 動 你走過去,發現手中的鑰匙還可以開啟它,你推開門,發現裡面還有一扇門,你繼續開啟,若干次之後,你開啟面前一扇門,發現只有一間屋子,沒有門了。你開始原路返回,每走回一間屋子,你數一次,走...

遞迴演算法經典例項 演算法 遞迴演算法

遞迴現象 老和尚講故事 自己呼叫自己 兩面鏡子互相映像 兩者相互呼叫 演算法思想 把規模大的問題轉化為規模小的相似的子問題來解決。在函式實現時,因為解決大問題的方法和解決小問題的方法往往是同乙個方法,所以就產生了函式自己呼叫自己的情況。遞迴函式 內部操作直接或間接地呼叫了自己的函式。遞迴函式兩大要素...