1到20的阶乘 C语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1到20的阶乘 C语言相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
int main()
int fac(int n);
int sum=0,m,i;
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
printf("%d",sum);
return 0;
int fac( int n)
int m;
if (n==1)
m=1;
else m=fac(n-10)*n;
return(m);
哪里错了啊
long
int的最大数值,1到16就已经溢出了,何况你的还是有符号的,比无符号的少差不多一半.
这个用递归实现的.
#include<stdio.h>
void
main()
int
fac(int
x);
unsigned
long
int
y;
int
x;
printf("请输入一个整数:");
scanf("%d",&x);
y=fac(x);
printf("%ld\n",y);
int
fac(int
x)
unsigned
long
int
y;
if(x==1)
y=1;
else
y=fac(x-1)*x;
return
y;
参考技术A 2432902008176640000
请按任意键继续. . .
代码:
#include<stdio.h>
#include "stdlib.h"
int main()
double fac(int n);
double sum=0,m;
int i;
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
printf("%0.lf\n",sum);
system("pause");
double fac( int n)
double m;
if (n==1)
m=1;
else m=fac(n-1)*n;
return(m);
你求的是阶乘的累加和。20项很大了,查过了整形的范围了。用double就可以了。
在就是 递归表达式:
n==1 return 1
else
return n*f(n-1)本回答被提问者采纳 参考技术B for(i=1;i<=20;i++)
m=fac(i);
sum+=m; 这里改成
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
//应该是你的for循环的范围搞错了追问
麻烦你再看一下 怎么还是不行啊====
追答fac(n-10)是不是要改成n-1
参考技术C 被调用函数里应该是static int m=1;
m*=n;
return m;
高级C语言目录
目前高级C语言专栏文章总数为69篇,后序会逐渐更新并整理目录,感谢关注
目录
C语言学习篇
资料分享篇
杂谈C语言
C语言实例
错误解决篇
以上是关于1到20的阶乘 C语言的主要内容,如果未能解决你的问题,请参考以下文章