求C语言用递归实现排列组合的数据太大就会溢出的问题!
#include<stdio.h>long jc(int n)
{
if(n==0) return 1;//0的阶乘等于1
else return n*jc(n-1);//n的阶乘等于n乘以(n-1)的阶乘
}
long zh(int m,int n)
{
long i;
i=jc(m)/(jc(n)*jc(m-n));//组合公式
return i;
}
void main()
{
int m,n;
printf("请输入总数目和需要取出的数目:\n");
scanf_s("%d%d",&m,&n);
printf("%ld",zh(m,n));
}
以上是我写的部分,但是如果输入的数据稍微大一点就执行不通过了,请问该如何解决?