階乘、排列與組合
阿新 • • 發佈:2018-12-21
排列組合
排列組合是組合學最基本的概念。所謂排列,就是指從給定個數的元素中取出指定個數的元素進行排序。組合則是指從給定個數的元素中僅僅取出指定個數的元素,不考慮排序。
Python程式碼實現
功能一:階乘
這裡用遞迴實現階乘
#階乘
def jiecheng(a):
if a == 1:
return a
else:
return a * jiecheng(a - 1)
功能二:組合數
首先定義一個取整函式,熟悉我的讀者都知道,我所有的取整函式都用 num() 表示。該函式用於在不影響數值的情況下,去掉小數點後的 0。
#取整 def num(a): if int(a) == float(a): return int(a) return float(a)
考慮到輸入的方便和讀寫習慣,用 c(n,m) 表示組合數,其中 c 為小寫字母,n >= m :
#組合數 n >= m
def c(n,m):
if m == n:
return 1
C = jiecheng(n) / jiecheng(m) / jiecheng(n - m)
return num(C)
功能三:排列數
與上面類似,用 a(n,m) 表示排列數。
#排列數 n >= m def a(n,m): if m == n: return jiecheng(n) A = jiecheng(n) / jiecheng(n - m) return num(A)
測試區
#例如:
result = c(3,2) + a(4,3)
m = num(result)
print(m)
執行結果為:
博主建議:
以上程式碼可用於解一些概率題以及生活中的數學問題,能夠迅速幫助我們計算出答案。
但對於常見的排列數、組合數等,不可對程式碼過分依賴!