首頁 >常見問題 >什麼是遞迴?

什麼是遞迴?

烟雨青岚
烟雨青岚原創
2020-06-15 15:44:575724瀏覽

什麼是遞迴?

什麼是遞迴?

程式呼叫自身的程式設計技巧稱為遞歸( recursion)。

遞歸做為演算法在程式設計語言中廣泛應用。一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述解題過程所需的多次重複計算,大大減少了程式的程式碼量。遞歸的能力在於用有限的語句來定義物件的無限集合。

一般來說,遞迴需要有邊界條件、遞歸前進段和遞迴回傳段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。

函數巢狀呼叫過程範例

什麼是遞迴?

構成遞迴需具備的條件:

1 .子問題須與原始問題為同樣的事,且更為簡單;

#2. 不能無限制地調用本身,須有個出口,化簡為非遞歸狀況處理。

在數學和電腦科學中,遞歸指由一種(或多種)簡單的基本情況定義的一類物件或方法,並規定其他所有情況都能被還原為其基本情況。

在數學和電腦科學中,遞歸指由一種(或多種)簡單的基本情況定義的一類物件或方法,並規定其他所有情況都能被還原為其基本情況。

例如,下列為某人祖先的遞歸定義:某人的雙親是他的祖先(基本情況)。

某人祖先的雙親同樣是某人的祖先(遞歸步驟)。斐波納契數列(Fibonacci Sequence),又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21..... I [1] 

斐波納契數列是典型的遞迴案例:遞迴關係就是實體自己和自己建立關係。

Fib(0) = 1 [基本情況] Fib(1) = 1 [基本情況] 對所有n > 1的整數:Fib(n) = (Fib(n-1) Fib(n -2)) [遞歸定義] 儘管有許多數學函數可以遞歸表示,但在實際應用中,遞歸定義的高開銷往往會讓人望而卻步。例如:

階乘(1) = 1 [基本情況] 對所有n > 1的整數:階乘(n) = (n * 階乘(n-1)) [遞歸定義] 一種便於理解的心理模型,是認為遞歸定義對物件的定義是依照「先前定義的」同類物件來定義的。例如:你怎樣才能移動100個箱子?答:你先移動一個箱子,並記下它移動到的位置,然後再去解決較小的問題:你怎麼能移動99個箱子?最終,你的問題將變成如何移動一個箱子,而這時你已經知道該怎麼做的。

如此的定義在數學中十分常見。例如,集合論對自然數的正式定義是:1是自然數,每個自然數都有一個後繼,這一個後繼也是自然數。

德羅斯特效應

德羅斯特效應是一種遞歸的視覺形式。圖中女性手持的物體中有一幅她本人手持同一物體的小圖片,進而小圖片中還有更小的一幅她手持同一物體的圖片,依此類推。

又例如,我們在兩面相對的鏡子之間放一根正在燃燒的蠟燭,我們會從其中一面鏡子裡看到一根蠟燭,蠟燭後面又有一面鏡子,鏡子裡面又有一根蠟燭……這也是遞歸的表現。

更多相關知識,請造訪 PHP中文網! !

以上是什麼是遞迴?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn