第2周报告2:
实验目的:用递归求既阶乘求m n的组合数
程序的版权和版本声明部分* Copyright (c) 2011,
烟台大学计算机学院学生 * All rights reserved.* 文件名称:
* 作 者:石丽君
* 完成日期: 2012年 2月27 日*
版 本 号: *
* 算法设计
#include <iostream>
using namespace std;
long fac(int n)
{
long f;
if(n<0)
{
cout<<"n<0;data error!"<<endl;
f=-1;
}
else
if(n==0||n==1) f=1;
else f=fac(n-1)*n;
return f;
}
int main ()
{
long y1,y2,y3;
int m,n,k,y;
cout<<"请输入两个数" ;
cin>>m>>n;
if(m==n)
{
y=1;
}
else if(m>n)
{
y1=fac(m);
y2=fac(n);
k=m-n;
y3=fac(k);
y=y1/(y2*y3);
}
else
{
y1=fac(n);
y2=fac(m);
k=n-m;
y3=fac(k);
y=y1/(y2*y3);
}
cout<<"m"<<" "<<"n"<<"的组合数为"<<y<<endl;
return 0;
}
感想:好高兴,这是我自己全权完成的程序
经验积累:long整形只能到13的阶乘