函式的遞回
函式呼叫自身的編程技巧稱為遞回,
函式內部可以呼叫其他函式,當然在函式內部也可以呼叫自己,
遞回的特點
- 函式內部的代碼是相同的,只是針對引數不同,處理的結果不同,
- 當引數滿足一個條件時,函式不再執行,這個非常重要,通常被稱為遞回的出口,否則會出現死回圈,
示例代碼:
def sum_numbers(num):
print(num)
# 遞回的出口很重要,否則會出現死回圈
if num == 1:
return
# 自己呼叫自己
sum_numbers(num - 1)
sum_numbers(3)
# 3
# 2
# 1

遞回分為兩個重要的階段:遞推+回溯,
- 遞推:函式不斷減少問題規模直至最終的終止條件,
- 回溯:拿到最終明確的值后,回傳給上次呼叫進行處理,直至初始層,
由于無限的遞回呼叫會占用大量的記憶體,因此 python 對函式的遞回呼叫的深度做了限制,當遞回呼叫的次數達到限制時,就會拋出例外,要避免出現這種情況,就必須讓遞回呼叫在滿足某個特定條件下終止,
遞回案例
需求:計算數字累加,接收一個 num 的整數引數,計算 1 + 2 + ... num 的結果,
def sum_numbers(num):
if num == 1:
return 1
# 假設 sum_numbers 能夠完成 num - 1 的累加
temp = sum_numbers(num - 1)
# 函式內部的核心演算法就是兩個數字的相加
return num + temp
print(sum_numbers(2))
# 3
遞回是一個編程技巧,初次接觸遞回會感覺有些吃力!
在處理不確定的回圈條件時,使用遞回格外有用,例如:遍歷整個檔案目錄的結構,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/40960.html
標籤:Python
