python靜態遞迴函式 python 遞迴函式

2021-10-13 14:27:23 字數 2084 閱讀 2988

前言:本篇關於遞迴基本借鑑下面部落格講解加入自己理解。

1.遞迴函式定義

如果乙個函式在函式內部呼叫自己,那這個函式就是遞迴函式。如:

defsum(arg,stop):

print(arg)

if arg

arg+=arg

sum(arg,stop)

sum(1,20)

2.遞迴的特性

1) 必須有乙個明確的結束條件,不然進入了死迴圈。

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

3) 遞迴效率不高,遞迴層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位)

如把上例中return返回值,返回的是最初的棧值:

1 defsum(arg,stop):2 print(arg)3 if arg<4 arg sum returnarg7>

8 print(sum(1,20))9

10 #執行結果

11 1

12 2

13 4

14 8

15 16

16 32

17 2 #返回值一層一層返回arg的值,最後返回最初的棧值

demo

3.應用遞迴獲取斐波那契數列

斐波那契數列是指前兩個數加起組成第三個數規律的一組數列,如:0,1,1,2,3,5,8,13.

1 deffunc(arg1,arg2,stop):2 if arg1==0:3 print(arg1,arg2)4 arg3 =arg1+arg25 print(arg3)6 if arg3<7 func>

9 func(0,1,10)10

11 #執行結果

12 0 1

13 1

14 2

15 3

16 5

17 8

18 13

demo

4.應用遞迴實現二分法查詢

當資料量很大時查詢,適宜採用二分法。採用二分法查詢時,資料需是排好序的,取中間值與查詢值比較而取捨一半資料,這樣可以縮減查詢時間。

1 defbinary_search(data_source,find_n):2 mid=int(len(data_source)/2)3 if len(data_source)>1:4 if data_source[mid] > find_n: #data in left

5 print('data in left of [%s]'%data_source[mid])6 binary_search(data_source[:mid],find_n)7 elif data_source[mid] < find_n: #data in right

8 print('data in left of [%s]'%data_source[mid])9 binary_search(data_source[mid:],find_n)10 else:11 print('found find_s:',data_source[mid])12 else:13 print('cannot find ....')14

15 if __name__=='__main__':16 data = list(range(1,50000))17 binary_search(data,36378)18

19 #執行結果

20 data in left of [25000]21 data in left of [37500]22 data in left of [31250]23 data in left of [34375]24 data in left of [35937]25 data in left of [36718]26 data in left of [36327]27 data in left of [36522]28 data in left of [36424]29 data in left of [36375]30 data in left of [36399]31 data in left of [36387]32 data in left of [36381]33 found find_s: 36378

demo

7>4>

python靜態遞迴函式 python遞迴函式

一 遞迴的定義 1.什麼是遞迴 在乙個函式裡在呼叫這個函式本身 2.最大遞迴層數做了乙個限制 997,但是也可以自己限制 1 deffoo 2 print n 3 n 1 4 foo n 5 foo 1 驗證997 3.最大層數限制是python預設的,可以做修改,但是不建議你修改。因為如果用997...

python遞迴函式例項 python遞迴函式

python遞迴函式 什麼是遞迴?遞迴,就是在函式執行中自己呼叫自己 示例 def recursion n 定義遞迴函式 print n 列印n recursion n 1 在函式的執行種呼叫遞迴 recursion 1 呼叫函式 這個函式在不斷的自己呼叫自己,每次呼叫n 1,看下執行結果 998t...

PYTHON 遞迴函式

如果乙個函式體直接或者間接呼叫自己,那麼這個函式就稱為遞迴函式 也就是說,遞迴函式體的執行過程中可能會返回去再次呼叫該函式 在 裡,遞迴函式不需要任何特殊的語法,但是它需要付出一定的努力去理解和建立 我們會以乙個簡單的例子開始 寫乙個函式求乙個自然數中所有數字的和 在設計遞迴函式的時候,我們會尋找能...