| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1744 人关注过本帖
标题:求1!+2!+3!+4!+5!+...+20!,我错在哪里?
只看楼主 加入收藏
lhw84874429
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-11-6
收藏
得分:0 
public class Factorial
{
public static void main(String [] args)
{
int f=1,sum=0;
for(int i=1;i<=4;i++)
{
f*=i;
sum+=f;
}
System.out.println(sum);
}
}

2007-11-20 01:22
lhw84874429
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-11-6
收藏
得分:0 
回复:(熊猫or彦)求1!+2!+3!+4!+5!+...+20!,我错在哪...
public class Factorial
{
public static void main(String [] args)
{
int f=1,sum=0;
for(int i=1;i<=4;i++)
{
f*=i;
sum+=f;
}
System.out.println(sum);
}
}

2007-11-20 01:23
huxs
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-10-7
收藏
得分:0 

数组a和k都要用double定义才行,long 型还是会溢出.....

2007-11-20 21:33
熊猫or彦
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-11-8
收藏
得分:0 
数组a[i]要以long定义
2007-11-21 12:58
hczsea
Rank: 2
等 级:论坛游民
帖 子:129
专家分:68
注 册:2007-10-23
收藏
得分:0 
20!的值是2,432,902,008,176,640,000
你们的程序怎么写的啊
2007-11-21 15:59
zhangjian110
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2007-10-7
收藏
得分:0 
a[i+1]=a[i]+a[i+1];
这句话有问题
2007-11-21 17:21
mikewolf
Rank: 1
等 级:新手上路
帖 子:175
专家分:0
注 册:2004-7-3
收藏
得分:0 

用这个试试
/* 求n! (0<n<10000)*/
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
void cal(unsigned int *s,int n)
{
unsigned long p,k=0;
int i;

/* b用来记录后面的0 ,m用于跟踪应当处理的末尾位置*/
static int m=1,b=0;

for(i=b;i<m;i++)
{
p=(long)s[i]*(long)n+k;
k=p/10000;
s[i]=p-k*10000;
}

if(!s[b])
{
b++;
}

if(k){
s[m++]=k;
}
}

int main(void)
{
unsigned int *s;
int i;
int n;
scanf("%d",&n);
s=(unsigned int *)malloc(n*sizeof(s));

for(i=1;i<n;i++)
{
s[i]=0;
}
s[0]=1;

for(i=2;i<=n;i++)
{
cal(s,i);
}

printf("\n%d!=\n",n);

n--;
while(!s[n])
{
n--;
}
printf("%d",s[n--]);

for(i=n;i>=0;i--)
{
printf("%04d",s[i]);
}
printf("\n");
free(s);

getch();
return 0;

}

2007-11-21 19:56
mikewolf
Rank: 1
等 级:新手上路
帖 子:175
专家分:0
注 册:2004-7-3
收藏
得分:0 

剩下的工作就是实现阶乘累加!

2007-11-21 20:06
dicky3651
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-9-27
收藏
得分:0 
原帖由 熊猫or彦 于 2007-11-17 12:39 发表 [url=http://bbs.][/url]
谢谢大家了,找到错误了.int a数组 该改成 long a数组 不然存不了.

写阶乘其实是可以不用数组的,用数组把问题搞得更加复杂,其实可以这样写:
#include<stdio.h>
void jiecheng(int);
int main()
{
 int a;
    printf("%s","请输入一个数");
 scanf("%d",&a);
 jiecheng(a);
 return 0;
}
void jiecheng(int a)
{
 int b, c,d=1,e=0;
 for(b=1;b<=a;b++)
 { for(c=1;c<=b;c++)
     { d*=c;
            
     }
     e+=d;
  d=1;
 }
    printf("%d",e);
}
这样你想由1!加到几多都可以了,只要自己输入目标数字,用数组太复杂了,不用数组更好

又要学LINUX内核,又要学SDK,仲要本本书都砖头咁厚,简直是拿我的命
2007-11-22 20:52
fanghao520
Rank: 2
等 级:论坛游民
帖 子:17
专家分:18
注 册:2010-11-13
收藏
得分:0 
#include<stdio.h>
int main()
{
    int i=1,t=1,sum=0;
    while(i<=20)
    {
        t=t*i;
        i=i+1;
        sum=sum+t;
    }
    printf("%d\n",sum);
    return 0;
}
2010-11-23 21:22
快速回复:求1!+2!+3!+4!+5!+...+20!,我错在哪里?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018927 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved