给定求组合数公式为:,编一程序,输入m和n的值,求
的值。注意优化算法,降低溢出可能。要求:主函数调用以下函数求组合数:
int Fabricate( int m, int n ); //返回的值
Fabricate函数内需调用Multi函数:
int Multi( int m, int n ); //返回
程序由4个文件组成。头文件用于存放函数原型,作为调用接口;其他3个cpp文件分别是main、Fabricate和Multi函数的定义。
分析计算公式
得到:
m!/(n!*(m-n)!)=(m*(m-1)*…*(m-n+1)*(m-n)!)/ (n!*(m-n)!)
=(m*(m-1)*…*(m-n+1)/ (n!)
因此可以避免求较大数据m的阶乘,减少溢出的可能性。