演算法 遞迴 線條件和遞迴條件 棧 呼叫棧 遞迴呼叫棧
阿新 • • 發佈:2019-01-13
Sack Overflow:”如果使用迴圈效能可能更高;如果使用遞迴,程式更容易理解。如何選擇要看什麼對你來說最重要。“
一、遞迴函式必須有 基準條件 和 遞迴條件
基準條件:負責到達一定條件結束迴圈
遞迴條件:負責遞迴迴圈
def record(i):
print(i)
if i <= 0:
return #基準條件,負責結束迴圈
else:
record(i-2) #遞迴條件。負責迴圈
record(22)
運算結果:
二、呼叫棧
當A函式呼叫一個函式B時,當前函式A處於未完成狀態,當完成B函式的呼叫和運算,繼續函式A的任務。
#棧的呼叫
def hello(name): #A函式 print('hello' + name + '!') hello_too(name) #B函式 print('it time to say bye!') bye() #C函式 def hello_too(name): #B函式 print('how are you ' + name + '?') def bye(): #C函式 print('ok bye!') name = 'xiaoming' hello(name)
執行結果:
三、遞迴呼叫棧
我們做個階乘函式,用來做舉列子:
def jiechang(n):
if n == 1:
return 1 #此處return值為階乘函式的最後一步,不可或缺的1
else:
return n * jiechang(n-1)
jiechang(2)
jiechang(3)
jiechang(4)
執行結果:
四、總結
1、遞迴函式指的是呼叫自己的函式,遞迴函式有兩個條件:基線條件、遞迴條件。
2、棧的兩種操作:壓入和彈出,所有函式的呼叫都進入呼叫棧。