簡單了解遞迴演算法

2021-10-08 04:21:33 字數 1540 閱讀 9608

從前有座山,山里有座廟,廟裡有個老和尚,正在給小和尚講故事呢!故事是什麼呢?從前有座山,山里有座廟,廟裡有個老和尚,正在給小和尚講故事呢!故事是什麼呢?從前有座山,山里有座廟,廟裡有個老和尚,正在給小和尚講故事呢!故事是什麼呢?..

函式內部是可以呼叫其他函式的,這種呼叫就是函式的巢狀呼叫。

遞迴就是'函式在內部直接或間接呼叫自己本身'。

1.必須有明確的退出條件

2.每次進入更深一層遞迴時,問題規模比上次遞迴都有所減少

3.遞迴到一定層次就會出現結果

4.遞迴效率不高,遞迴層數過多會導致棧溢位(棧記憶體不夠用)

5.棧溢位預設是1000,但是當遞迴到998就已經報錯了。

棧溢位錯誤:recursionerror: maximum recursion depth exceeded in comparison
#修改遞迴深度的值

import sys

sys.setrecursionlimit(

2000

)

import sys

sys.setrecursionlimit(

2000

)#設定最大遞迴深度是2000

defsum_digui_func

(n):

if n <=0:

return

0return n + sum_digui_func(n-1)

#當我們執行到1997是,還是可以執行的。到1998就報錯,所以可以認為比設定最大遞迴深度-3就是可以執行的。

print

(sum_digui_func(

1997

))

說到遞迴就要說下逆向思維,在大部分情況下,人們所想的是都是片面,也就是有侷限性。逆向思維就是突破這個侷限性,從另一方面去想怎麼解決這個事情。

關於司馬光砸缸:

講述了司馬光砸壞水缸,救出同伴的古詩。

在大部分情況下的人,當時所想的是如何讓人脫離水,從而救出人。

我們通過逆向思維,想到也可以使水脫離人,從而脫救,於是把水缸砸壞,使水流光從而進行救助。

def

sum_func

(n):

#設定出口,退出條件

if n <=0:

return

0#呼叫自身,每次和自身-1相加

return n + sum_func(n-1)

print

(sum_func(5)

)

def

ride_func

(n):

#設定出口,退出條件

if n <=1:

return

1#呼叫自身,每次和自身-1相乘

return n + ride_func(n-1)

print

(ride_func(5)

)

PHP 遞迴簡單了解

初學php的時候,剛剛認識遞迴。然後對他進行了小小的總結。適用於小小白 1.乙個多維陣列,單元為數字的變成兩倍 如 array 1,2,b array 3,c array 4,5 中數字變成兩倍 function arr arr if is array value return arr array ...

分治演算法 簡單了解

部分內容來自 感謝原作者!這種將整個問題分解為若干個小問題來處理的方法稱為分治法。被分解出來的小問題與原問題有相同的解法,這樣便於演算法的計算 往往採用遞迴 分治法的控制流程 a 判斷是否滿足最小處理條件,或者說滿足了最小規模函式,然後進行處理,或者返回。有的可能沒有 b 如果沒有滿足最小規模,那麼...

遞迴演算法簡單題

最大公約數 題目內容 輸入兩個整數m,n,用遞迴演算法實現計算兩個數的最大公約數。輸入格式 輸入兩個整數m,n 輸出格式 最大公約數 輸入樣例 12,40 回車 輸出樣例 4 回車 時間限制 500ms記憶體限制 32000kb 理解最大公約數演算法!include int n intm void ...