python实现排列组合公式C(m,n)求值
实验六 理解浮点数运算的误差
实验目的:
1.理解组合数定义式的化简
2.理解浮点数运算的误差可能带来的问题
错误代码
def func(m,n):result=1minNI=min(n,m-n)for j in range(0,minNI):result=result*(m-j)//(minNI-j)return result
运算结果
func(5,3)8
正确代码
def func(m,n):a=b=result=1if 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