c语言中输入两整数m,n求m!+n!的值
- 提问者网友:遮云壑
- 2021-07-20 04:02
- 五星知识达人网友:零点过十分
- 2021-07-20 04:41
考虑Int最大存储到16的阶乘, 再大就会导致数据溢出.
所以可以用double来存放阶乘的结果. 楼上:古风的程序,fun函数定义成double,却又定义了int的y来存储阶乘结果... 无语..
#include <stdio.h>
__int64 fun(int a)
{
if(a<=1) return 1;
else return a*fun(a-1);
}
int main()
{
__int64 sum=0;
int m,n;
scanf("%d%d",&m,&n);
sum=fun(m)+fun(n);
printf("结果为:%I64d\n",sum);
return 0;
}
- 1楼网友:詩光轨車
- 2021-07-20 06:09
#include<stdio.h>
double fun(int x){ int y;
if(x==1)
y=1;
else y=x*fun(x-1);
return y;
}
void main(){
int m,n;
scanf("%d,%d",&m,&n);
printf("%f",fun(m)+fun(n)); getch();
}
- 2楼网友:洒脱疯子
- 2021-07-20 05:28
你好,很高兴为你解答,以下答案来自问问团队:54666
=============================================================================
下面这个方法是递归求阶乘的方法,fn函数就是带有一个参数的。你可以将m和n分别代入计算得值后相加就是你的 问题的答案了,相信这段c代码不难了吧?
int fn(int n) { if(n==0||n==1) { return 1; } else if(n>0) { return n*fn(n-1); } return fn(n); }