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