python 遞迴函式

2022-07-27 17:18:18 字數 1845 閱讀 4203

1,初識遞迴函式

1)什麼是遞迴函式?

在函式中自己呼叫自己叫做遞迴函式

遞迴函式超過一定程度會報錯。---recursionerror: maximum recursion dep th exceeded while calling a python object。遞迴的錯誤,超過了遞迴函式的最大深度。

2)最大遞迴深度:預設997

3)遞迴函式的優缺點

#如果遞迴次數太多,就不適合使用遞迴來解決問題。

#遞迴的缺點:佔記憶體

# 遞迴的優點:會讓**變簡單

4)什麼時候用遞迴?

問題分析一級一級向下,答案一步一步向上返。

2、初識演算法------二分法

#找到目標值aim,在l中的位置

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

deffind(l,aim):

mid_index = len(l)//2 #

找中間的索引

if l[mid_index] < aim: #

如果中間索引所對應的值《目標值

new_l = l[mid_index+1:]

find(new_l,aim)

elif l[mid_index] > aim: #

如果中間索引所對應的值》目標值

new_l =l[:mid_index]

find(new_l, aim)

else

:

print('

找到了'

,mid_index,l[mid_index])

find(l,66)

#問題:如果目標值不在l裡,則會報錯,且沒有返回值。因此需要進行改進

改進:

def find(l,aim,start = 0,end =none):

end = len(l) if end is none else

end mid_index = (end - start)//2 +start

if start <=end:

if l[mid_index]

return find(l,aim,start =mid_index+1,end=end)

elif l[mid_index] >aim:

return find(l, aim, start=start, end=mid_index-1)

else

:

return

mid_index

else

:

return

'找不到這個值

'ret= find(l,44)

print(ret)

3,超過最大遞迴限制的報錯問題

只要寫遞迴函式,必須要有結束條件

4,返回值問題

不要只看到return就認為返回了。要看返回操作是在遞迴到第幾層的時候發生的,然後返回給了誰。

如果不是返回給最外層函式,呼叫者就接收不到。

需要再分析,看如果把結果返回回來

5,大部分的遞迴可以用迴圈來替代,遞迴一般與演算法相結合。

6,遞迴函式的效率問題

遞迴函式一次執行呼叫自身一次會很快,如果一次執行呼叫了兩次自身的話就會很慢。

改進:

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

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

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 遞迴函式

前言 本篇關於遞迴基本借鑑下面部落格講解加入自己理解。1.遞迴函式定義 如果乙個函式在函式內部呼叫自己,那這個函式就是遞迴函式。如 defsum arg,stop print arg if arg arg arg sum arg,stop sum 1,20 2.遞迴的特性 1 必須有乙個明確的結束條...