# 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 返回乙...