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):3,超過最大遞迴限制的報錯問題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)
只要寫遞迴函式,必須要有結束條件
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 必須有乙個明確的結束條...