在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。12
3456
78910
1112
13def
calc(n):
print
(n)
if
int
(n
/
2
)
=
=
0
:
return
n
return
calc(
int
(n
/
2
))
calc(
10
)
輸出:
10
5
2
1
遞迴特性:
1. 必須有乙個明確的結束條件
2. 每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少
3. 遞迴效率不高,遞迴層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位)
測試python最大遞迴層次
python預設的最大遞迴層數 執行環境 windows 7,x64 python環境 python3.7.0b3 def fab n if n 1 return 1 else return fab n 1 n print fab 998 得到的最大數為998,以後就是報錯了,998這個數值莫名想起...
遞迴最大深度
題外話 由於遞迴深度可控,一般寫類似遞迴的方法時盡量使用迭代器,例如fibonacci數列,在python高階中我會把迭代器實現fibonacci數列的方法貼出來,而不是用遞迴。遞迴深度盡量不去修改,用起來也會很繞。下面我貼出來如何測試出本機遞迴深度 def func num if num 1 re...
遞迴降序遍歷層次目錄
關於path alloc函式 include include include include include include function type that is called for each filename typedef int myfunc const char const stru...