1. 程式人生 > >階乘、排列與組合

階乘、排列與組合

排列組合

排列組合是組合學最基本的概念。所謂排列,就是指從給定個數的元素中取出指定個數的元素進行排序。組合則是指從給定個數的元素中僅僅取出指定個數的元素,不考慮排序。

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)

執行結果為:

博主建議:

以上程式碼可用於解一些概率題以及生活中的數學問題,能夠迅速幫助我們計算出答案。
但對於常見的排列數、組合數等,不可對程式碼過分依賴!