组合数的递归运算

组合数是就是从m个不同的元素中取出n个元素所有的组合的个数。组合数的公式是c(m,n)=m!/(n!*(m-n)!)。所以当我们想要计算组合数时,就需要考虑到阶乘的问题,我定义了两个函数fact和conbinenumber,fact函数用来实现阶乘,conbinenumber通过调用fact函数来实现计算组合数。

#include "stdafx.h"
long conbinenumber(int m,int n);
long fact(int a);
int _tmain(int argc, _TCHAR* argv[])
{
	int x,y;
	scanf_s("%d,%d",&x,&y);
	long con=conbinenumber(x,y);
	printf("%d\n",con);
}
/*
	函数功能:输出组合数
	函数名称:conbinenumber
	参数:m--用来表示组合数上标
		  n--用来表示组合数下标
	返回值:long
*/
long conbinenumber(int m,int n)
{
	long m1=fact(m);
	long n1=fact(n);
	long l=fact(m-n);
	if(m==0||m==1)
		return 1;
	else
		return (m1/(n1*(l)));
}
long fact(int a)
{
	if(a==1||a==0)
		return 1;
	else 
		return (a*fact(a-1));
}

实验结果如下:
在这里插入图片描述
在这里插入图片描述
输入两个数据时,记得中间加上逗号,因为代码中输入两个数据时用了scanf("%d,%d",&x,&y)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值