什麼是遞迴?

時間 2021-05-06 09:22:48

1樓:

有乙個盒子,現在告訴你這個盒子中有一把鑰匙。 你需要找到這個鑰匙,但是開啟盒子,盒子裡面有盒子,而盒子裡的盒子又有盒子,為了找到盒子,其實你只需要用這種方法:1.

檢查盒子裡的每樣東西;2. 如果是盒子在返回到第1步;如果是鑰匙則大功告成

2樓:ZeroToOne

郭德綱:於老師是後台最有文化的人,喜歡看書。於老師床頭總會放著一本書,很厚,書的旁邊放著一本工具書——《新華字典》,字典旁邊還放著一本書——《怎樣查字典》。

3樓:小Z

前面的答主已經很明確的說明了「遞迴」的直觀意義,我在這裡想要稍稍補充一下「遞迴函式」的定義問題。

當初學邏輯學時老師講到遞迴函式這一章時我驚為天人,因為對遞迴函式的定義,竟然不需要用到遞迴規則!

所謂遞迴規則,直觀來講就是答主們所解釋的那樣: 0 \end \right. " eeimg="1"/>

注: " eeimg="1"/>

在Enderton的定義中,遞迴函式的形成規則只需要復合規則與極小化規則就夠了。

而在介紹規則之前,我們需要說明規則作用的初始函式。

初始函式有三種:

1.零函式

2.後續函式

3.投影函式

之後說明形成規則。

遞迴函式的形成規則有兩個:

復合規則:

直觀來說是指遞迴函式的復合也是遞迴函式。

最小數運算規則直觀來講是說:若 是遞迴函式,那麼我們可以改變n使得 ,記最小的 為 。那麼函式 也是遞迴函式。(寫完感覺和定義也差不多,那就不打了www)

一函式是遞迴函式當且僅當它由初始函式有限次應用復合規則最小數運算規則而形成的!並不涉及遞迴規則

而更為神奇的是,遞迴規則可以通過哥德爾的工作在之後的推演中被證明出來。遞迴規則的證明略微有些複雜,在此暫且不表。咪啪~

4樓:Chon

以前聽過乙個公開課,老師舉例,美國憲法定義的美中國人:父母是美中國人或者在美國出生。父親是不是美中國人,又變成了同樣的問題。

父親的父親還是同乙個問題。但這個問題不能無限重複下去,所以還有個退出條件,那就是在美國本土出生。所以遞迴就是,同乙個函式呼叫自己,但要有個退出條件,不能無限遞迴。

5樓:

有個朋友過來給你講故事。

從前有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

--從前有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

----從前有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

------從前有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

這樣下去有無數層

你終於受不了講故事的,怒氣值滿了一腳把對方踢飛了,這叫做Stack Overflow,畢竟你的時間資源和耐心是有限的。

對方養好了傷之後,又來給你講故事,這次他為了防止不會挨打,他決定有辦法終止這個輪迴,於是他把「從前」改為了固定年份,並且他事先宣告:只講到2023年,就終止。故事變成了:

2023年時,會有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

--2023年時,會有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

----2023年時,會有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

你耐著性子聽到了後面,正想打人時:

2023年時,會有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

--2023年時,會有座山,山上有座廟,廟裡有個老和尚,老和尚在給小和尚講故事,故事講的是

----2023年時,會有座山,但新教出現了,山上的廟改成了小教堂,

--2023年的故事講完了

2023年的故事講完了

你非常高興,他一把拉住你,說還沒完:

--------2023年的故事講完了

------2023年的故事講完了

----2023年的故事講完了

--2023年的故事講完了

你快發瘋了,終於等到

2023年的故事講完了

這次你沒有打人。

6樓:Java架構師簡樂

所謂遞迴,簡單點來說,就是乙個函式直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解。我們把"遞迴"比喻成「查字典」,當你查乙個詞,發現這個詞的解釋中某個詞仍然不懂,於是你開始查這第二個詞,可惜,第二個詞仍然有不懂的詞,於是查第三個詞,這樣查下去,直到有乙個詞的解釋是你完全能看懂的,那麼遞迴走到了盡頭,然後你開始後退,逐個明白之前查過的每乙個詞,最終,你明白了最開始那個詞的意思

7樓:Mark Zhang

遞迴就是乙個函式不斷地呼叫函式自身。

例如「禁止套娃」函式不斷呼叫自身

初始狀態:套娃

呼叫1次:禁止套娃

呼叫2次:禁止禁止套娃

呼叫3次:禁止禁止禁止套娃

接著舉乙個例項吧。

這裡的鏈結就是把這個問題再呼叫一次(遞迴一次)。

8樓:七八人

Brother return.

你找你小哥哥要糖,你小哥哥找較小哥哥要糖,你較小哥哥找......直到找到你的大哥或某個有糖的哥哥,然後把糖弟回來(或是你的大哥也沒有糖),當然,要糖的方式與還糖的方式一模一樣。

這就是弟歸,當然你不可能沒有大哥,不然就麻煩了。

9樓:茶白

山重水複疑無路,柳暗花明又一村,疑無路,又一村,疑無路,又一村,又一村,又一村........疑無路,砰,撞牆了,到重點了,然後原路返回

10樓:Simonaz

如果你已經知道了什麼是遞迴,那建議你點乙個贊然後關掉這條回答。

如果你還不知道什麼是遞迴,我覺得這條回答寫的不錯,可以看看。

(遞迴不加終止條件的都是錯的!!

11樓:Eric Qiang

遞迴,在電腦科學中,還可解釋/理解為「重入」。

乙個函式是否「可重入」,與是否「可併發」,是兩個意思。

計算機的硬體中斷是否「可重入」? 即遇到乙個硬體中斷(如除0、訪問位址違例),然後呼叫相應的中斷handler程式執行時如果又發生了同樣的硬體中斷,腫麼辦???

12樓:caoglish

遞迴是一種迴圈,但是和普通迴圈不一樣的是普通迴圈是解決相同層的重複問題,而遞迴很像數學中的分形,它是不同層的重複問題。

好比一顆樹,主枝幹分岔成中枝幹,中枝幹分岔成小枝幹,小枝幹繼續分岔,但是他們的風岔方式都是一樣的。

又比如斐波那契數列,每個數字都是前兩個數字之和,然後前兩個數字又都是它們自己的前兩個數字之和,直到0和1.

我們能看到某種重複,但這個重複是卻有上下層的關係。對於這樣的重複關係,最推薦的解決方案就是遞迴。

如果你學過分形學,那麼你就把遞迴理解成有著結束條件的分形就行了。

13樓:浪啊

乙個簡單條件遞迴的意思就是你在走一條的路線,路線上面有乙個(或多個)出口,但是想出去要達到一定條件,你達不到條件,就需要一直照著這條路線一圈一圈走下去

14樓:十月份

遞迴在形式上很像迴圈,但是兩者有很大差別。遞迴可以用禮物盒模型來比喻。

例如有個禮物盒,盒子裡裝著盒子,盒子的盒子裡還裝著盒子……那麼想找到裡面的禮物,就得一層一層地拆盒子,直到拆到禮物為止。這個過程就是乙個遞迴,你每拆一層盒子,展現在你面前的都是乙個稍小的盒子,直到你拆到禮物為止。

那什麼是迴圈呢?迴圈是把同樣一件事情做多次,比如你做了10次仰臥起坐,那就是迴圈。拆禮物就不一樣了,因為你每次拆的盒子大小都不一樣。

15樓:小孫

從前有座山,山里有座廟,廟裡有個老和尚和小和尚,老和尚對小和尚說:從前有座山,山里有座廟,廟裡有個老和尚和小和尚,老和尚對小和尚說:從前有座山,山里

16樓:lishaoyan

下面的估計用最通俗的語言講解了什麼是遞迴,我經常晚上用這個故事哄我的小孩睡覺。

從前有座山,山上有座廟,廟裡有個老和尚和乙個小和尚,老和尚給小和尚講故事,講的是從前有座山,山上有座廟,廟裡有個老和尚和乙個小和尚,老和尚給小和尚講故事,講的是從前有座山,山上有座廟,廟裡有個老和尚和乙個小和尚,老和尚給小和尚講故事,講的是從前有座山,山上有座廟,廟裡有個老和尚和乙個小和尚,老和尚給小和尚講故事,講的是從前有座山,山上有座廟,廟裡有個老和尚和乙個小和尚,老和尚給小和尚講故事。。。

17樓:ZA139

遞迴的定義如下:

遞迴:

參見「遞迴」

什麼?這個定義什麼也沒有說啊!好吧,改一下:

遞迴:

如果還沒明白遞迴是什麼意思,參見「遞迴」來自劉汝佳老師《演算法競賽入門經典第二版》

18樓:

從前有座山,山里有座廟

廟裡有個老和尚給小和尚講故事

講的故事是

從前有座山,山里有座廟

廟裡有個老和尚給小和尚講故事

講的故事是

從前有座山,山里有座廟

廟裡有個老和尚給小和尚講故事

講的故事是

還有類似的

12345,上山打老虎

老虎不在家,打到了小松鼠

松鼠有幾隻,我來數一數

12345,上山打老虎

老虎不在家,打到了小松鼠

松鼠有幾隻,我來數一數

12345,上山打老虎

老虎不在家,打到了小松鼠

松鼠有幾隻,我來數一數

哄睡我崽,每天遞迴這兩個,啊哈哈哈哈

19樓:滄海月

比如說你到考試週要複習了

這叫遞迴式複習,(當然你最後還要回到第一層複習複雜一點:

當你把子問題解決了(滿足某種條件),再去處理上一代問題,一層一層深入,再一層一層淡出,最後回到根本問題

再比如說

你看見他

你看見他看見你看見他

你看見他看見你看見他看見你看見他

20樓:寄夏予你

我記得當時書上寫的是

請去瀏覽器搜尋遞迴,然後你會得到解釋是:遞迴,該詞條的釋義請去瀏覽器搜尋,當場笑到腦殼掉了。

現在想想就像是乙個f(x)的分段函式有乙個f(x+1)之類的分支,比如要求f(x)但是最後算的是f(f(f(f(x+4)))),但是要有乙個結束

21樓:金四

從前有座山

山上有座廟

廟裡有個老和尚和小和尚

老和尚對小和尚說:

從前有座山

山上有座廟

廟裡有個老和尚和小和尚

老和尚對小和尚說:

後來,電腦崩潰了……

題主,你賠我們電腦。

22樓:大家好我是李瞳瞳

錢=100塊

while 錢》0

買包子() //一塊錢乙個

這是迴圈。

買包子(錢){

錢-1if 錢》0

買包子(錢)

遞迴。迴圈都可以改成遞迴(有的語言只有遞迴沒有迴圈),遞迴不一定。

23樓:武道德經

古之欲明明德於天下者,先治其國;欲治其國者,先齊其家;欲齊其家者,先修其身;欲修其身者,先正其心;欲正其心者,先誠其意;欲誠其意者,先致其知,致知在格物。物格而後知至,知至而後意誠,意誠而後心正,心正而後身修,身修而後家齊,家齊而後國治,國治而後天下平

快速排序尾遞迴的這種寫法是真的尾遞迴嗎

已登出 結論 不是尾排序 理由 不滿足尾排序條件 這個google可以得出結論 關於這個問題的猜想 我覺得是CLRS 7 4 問題引起的,這個問題提到尾排序技術,但在後續的描述中更像是描述尾排序的思想,which simulates tail recursion這是書中的原話,意思也很明顯,就是模擬...

遞迴的本質是什麼?

闊之 問題標籤中有 程式設計 那麼程式設計中遞迴的本質這裡分兩個層次 1 計算機執行的底層機制 遞迴的本質 2 解決問題的思想上 如果乙個問題的解決方式 邏輯A 不複雜,但是問題的規模 任務量 比較大。那麼需要做的就是不斷地分解問題的規模,分解到最後你會發現,問題規模無法進一步分解 即任務分無可分,...

為什麼說遞迴效率低?

CuKing 遞迴效率不低 低的是因為濫用,或者是為了省事不在意速度.比如求階乘,乙個迴圈輕鬆解決,但是你非要遞迴那可不是浪費很多開銷麼.但是你要是多分支的遞迴,迴圈搞就得手工棧模擬,想實現的比原生遞迴更好更快還是有難度的,這時候直接遞迴反而效率高 stary 1 函式開銷 2 不會寫遞迴比如fib...