什麼是遞迴函式?
遞迴(recursion):
1.是乙個函式
2.函式執行的過程中,自己呼叫自己
3.遞迴一定有結束呼叫自己的條件
4.遞迴效率不高
5.什麼問題必須用遞迴?漢諾塔
6.不會死迴圈,有最大遞迴次數限制,會報錯 recursionerror: maximum recursion depth exceeded while calling a python object
so,知道了什麼是遞迴函式,直接上**看例子,以斐波那契數列(fibonacci sequence)為例:
1 1 2 3 5 8 13 21 34
前兩項為1,後面每一項的值為其前兩項值的和
使用非遞迴演算法求fib數列中第n項的值:
def fib1(n):
n1 = 1
n2 = 1
for i in range(n-2):
n1,n2 = n2,n1+n2
return n2
print(fib1(7))
使用遞迴演算法求fib數列中第n項的值:
def fib2(n):
if n == 1 or n == 2:
return 1
else:
return fib2(n-2)+fib2(n-1)
print(fib2(7))
剛接觸遞迴可能很難理解,可能看不懂**的實現邏輯,建議使用3次呼叫,來分析遞迴呼叫的過程。
以fib2(4)為例
fib2(4)-->
fib2(3)+fib2(2) -->fib2(3)=fib2(2)+fib2(1),fib2(2)=1-->
fib2(2)+fib2(1)+1-->fib2(2)=1,fib2(1)=1-->
fib2(4) = (fib2(2)+fib2(1))+fib2(2)=1+1+1 = 3
注:
遞迴的效率不高
python基礎之遞迴函式
在python中我們使用函式經常是去呼叫別的函式,但是遞迴函式不一樣,它是 自己去呼叫自己 如果不了解遞迴的可以看下電影盜夢空間,相信會對理解遞迴函式有幫助。遞迴函式的條件有兩個 1.必須給遞迴函式乙個出口,否則會無限呼叫,耗費記憶體 2.對自己的遞迴條件作大膽假設 下面我們計算數學上經常計算的階乘...
筆記 python基礎之遞迴函式
學習要求 能看懂遞迴 能知道遞迴的應用場景 遞迴函式 了解什麼是遞迴 在函式中呼叫自身函式 最大遞迴深度預設是997 998 是python從記憶體角度出發做得限制 while true print 從前有座山 def story print 從前有座山 story print 111 story ...
Python基礎 遞迴函式
通俗一點來說在函式的內部,直接去呼叫其他函式的方式叫做函式的巢狀.但是,如果這個函式呼叫的是自身呢?這個樣子的函式自身就屬於遞迴函式 經典例項 階乘自身就能用遞迴函式來表達出來 1 1 2 2 1 3 3 2 1 n n n 1 2 1以上是簡單直接說明了階乘的表達,接下來至二級用函式來進行直接表達...