Python3 資料結構之遞迴

2021-09-02 05:49:17 字數 900 閱讀 1138

#遞迴

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......

用遞迴的方法來定義:

#fibonacci

x = int(input("input a number:"))

def fibonacci(n):

if n == 0 or n == 1:

return n

else:

return fibonacci(n-1) + fibonacci(n-2)

for i in range(x):

print(fibonacci(i))

Python3 資料結構

python中列表是可變的,這是它區別於字串和元組的最重要的特點,一句話概括即 列表可以修改,而字串和元組不能。列表的基本特點 操作 描述把乙個元素新增到列表的結尾,相當於 a len a x list.extend l 在列表末尾新增多個物件,引數可謂迭代物件相當於 a len a l list....

Python3 資料結構之快速排序

然後使用快速排序使用了分而治之 divide and conquer,d c 的思想 主要思想就是把乙個無序陣列分為3個部分 遞迴的思想重複以上步驟 參考演算法 給出的 quicksort def quick sort arr if len arr 2 return arr else pivot a...

Python3 資料結構之希爾排序

希爾排序 shell sort 演算法描述 step1 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素組成的 分別進行直接插入排序。step2 依次縮減增量再進行排序。step3 待整個序列中的元素基本有序 增量足夠小 時,再對全體元素進行一次直接插入排序。演算法結束。因為直接插入...