python實現排列組合公式C(m,n)求值


python實現排列組合公式C(m,n)求值
實驗六 理解浮點數運算的誤差
實驗目的:
1.理解組合數定義式的化簡
2.理解浮點數運算的誤差可能帶來的問題

錯誤代碼

def func(m,n):
result=1
minNI=min(n,m-n)
for j in range(0,minNI):
result=result*(m-j)//(minNI-j)
return result


運算結果

func(5,3)


正確代碼

def func(m,n):
a=b=result=1
if m<n:
print("n不能小於m 且均為整數")
elif ((type(m)!=int)or(type(n)!=int)):
print("n不能小於m 且均為整數")
else:
minNI=min(n,m-n)#使運算最簡便
for j in range(0,minNI):
#使用變量a,b 讓所用的分母相乘后除以所有的分子
a=a*(m-j)
b=b*(minNI-j)
result=a//b #在此使用“/”和“//”均可,因為a除以b為整數
return result


運算結果

func(5,3)
10


————————————————
版權聲明:本文為CSDN博主「半夏微光1117」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wmx1117/article/details/105466900


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM