Python3&資料結構之遞迴
阿新 • • 發佈:2018-11-30
#遞迴
def fact(x):
if x == 1:
return 1
else:
return x * fact(x - 1)
#tail recursion(尾遞迴)
def tail_recusion(x,total=1):
if x == 1:
return total
else:
return tail_recusion(x-1,total*x)
print(fact(5))
print(tail_recusion(5))
以上是遞迴和尾遞迴的程式碼。
在學習遞迴的同時要了解棧(stack)這種資料結構。
stack只有兩種操作:壓入(插入)和彈出(刪除和讀取)。
注:Python對遞迴的次數有限制,當遞迴深度超過1000時,會丟擲異常:
RecursionError: maximum recursion depth exceeded in comparison
用遞迴寫Fibonacci:Fibonacci數列為:0、1、1、2、3、5、8、13、21......
用遞迴的方法來定義:
- f(0) = 0
- f(1) = 1
- f(n) = f(n-1) + f(n-2) , n>=2
#fibonacci x = int(input("input a number:")) def fibonacci(n): if n == 0: return 0 if n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) for i in range(x): print(fibonacci(i))