資料結構 python語言描述 讀書筆記1

2021-08-22 19:16:18 字數 2540 閱讀 6745

# coding:utf-8

# 對集合使用模式匹配

rgbtuple = ((255, 0, 0), '#ff0000')

((r, g, b), hexstring) = rgbtuple # 模式匹配

可以跟蹤遞迴的過程,用來除錯遞迴。

# coding:utf-8

defoursum

(lower, upper, margin=0):

""" page 18: 一種跟蹤遞迴的辦法.

:param lower:

:param upper:

:param margin:

:return:

"""blanks = ' ' * margin

print(blanks+str(lower)+str(upper))

if lower > upper:

print(blanks+str(0))

return

0else:

result = lower + oursum(lower + 1, upper,margin+4)

print(blanks+str(result))

return result

print(oursum(1, 4))

# 14

# 24

# 34

# 44

# 54

# 0

# 4

# 7

# 9

# 10

# 10

# coding:utf-8

# page 19

deffactorial

(n, product=1):

if n == 1:

return product

else:

return factorial(n-1, n * product)

# 遞迴求階乘,輸入n輸出n!。函式不應該有引數product。

# 採用函式巢狀,將引數product隱藏在內部函式中。

deffactorial_2

(n):

defrecurse

(n, product=1):

if n == 1:

return product

else:

return factorial(n - 1, n * product)

return recurse(n)

# 書中該例子不恰當,階乘可以很便捷的實現。書中是為了講巢狀。

deffactorial_3

(n):

if n == 1:

return

1else:

return n*factorial_3(n-1)

print(factorial(4))

print(factorial_2(4))

print(factorial_3(4))

但是這種巢狀,在某些地方很有用。(隱藏引數)

這種將返回值作為引數的遞迴,也很有用。

# coding:utf-8

# 實現十進位制轉二進位制(r <= 10)並將二進位制翻轉;

# 比如: 6(110),輸出,011

# 遞迴,將要返回的值作為引數;

# 函式巢狀,隱藏引數;

defdec2bin

(dec_num):

defrecurse

(dec_num, bin_num=''):

if dec_num == 0:

return bin_num

else:

return recurse(dec_num // 2, bin_num + str(dec_num%2))

return recurse(dec_num)

print(dec2bin(6))

# 011

推廣到r進製:

# coding:utf-8

# 實現十進位制轉r進製(r <= 10)並將r進製翻轉;

# 比如: 6(二進位制為110),輸出,011

# 遞迴,將要返回的值作為引數;

# 函式巢狀,隱藏引數;

defdec2rbase

(dec_num, base):

defrecurse

(dec_num, base, bin_num=''):

if dec_num == 0:

return bin_num

else:

return recurse(dec_num // base, base, bin_num + str(dec_num%base))

return recurse(dec_num, base)

print(dec2rbase(6, 3))

# 02

資料結構 python語言描述 基礎排序演算法

每個python排序函式都是在整數的乙個列表上進行操作的,並且都會用乙個swap函式來交換列表中兩項的位置。def swap lyst,i j temp lyst i lyst i lyst j lyst j tempexchange the items at the positions i and...

用C語言描述資料結構

用c語言描述資料結構 學好計算機,主要要從三個方面做起,其中,第一步就是要學好各種語言,這是第一步,對各種語言有乙個大體的了解 然後就是資料結構了,它是計算機中的一門核心的課程,也是一門資訊計算 在最後本人認為就是演算法了,它也是這三部中最難得一步了,要學好計算機,做一名優秀的程式元,這三步是最基本...

資料結構(java語言描述) 堆

堆是一棵完全二叉樹,堆的每個父節點的值都大於等於子節點的值。或者 我們用陣列來儲存二叉樹。public class maxheap extends comparable public maxheap public maxheap e arr 返回堆中的元素個數 public int size 返回乙...