| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9379 人关注过本帖
标题:求助,关于1到20的阶乘和
只看楼主 加入收藏
CrazyChild
Rank: 1
来 自:广东汕头
等 级:新手上路
帖 子:21
专家分:2
注 册:2010-12-31
结帖率:100%
收藏
 问题点数:0 回复次数:14 
求助,关于1到20的阶乘和
程序代码:
#include<iostream>
using namespace std;
int main()
{
    int i, n, p = 1;
    cin >> n;
    long int s = 0;
    for(i = 1; i <= n; i++)
    {
        p *= i;
        s += p;
    }
    cout << s;
    return 0;
}
上面是常用的算法,之前见过一个更高效的,谁有的发出来指点下。那个好像是用嵌套循环来控制了
2011-03-17 20:26
a627677879
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-3-17
收藏
得分:0 
#include <stdio.h>
main()
{  long jiecheng(int m);
   long i,sum=0;
   for(i=1;i<=20;i++)
       sum+=jiecheng(i);
     printf("1!+2!+3!+...+20!=%d",sum);
     getch();
}
long jiecheng(int m)
{  int j;long jiecheng=1;
   for(j=1;j<=m;j++)
       jiecheng*=j;
       return jiecheng;
}
这是用c编的,
2011-03-17 21:18
给力芬2010
Rank: 2
等 级:论坛游民
帖 子:48
专家分:71
注 册:2011-3-17
收藏
得分:0 
#include<stdio.h>
int fac(int f)
{
    int m;
    if(f==0||f==1)
    m=1;
    else
    m=f*fac(f-1);
    return m;
    }
int main(void)
{
    int n,i,m;
    int sum=0;
    puts("1!+2!+3!+4!+...+n!=?");
    puts("Please input the n you want it to work:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        sum=sum+fac(i);
        
    printf("The sum of njie is %d",sum);
    return 0;
    }
2011-03-17 22:35
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
学习~~~~
PS:3楼的sum应该改成long比较合适一点。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-17 22:42
给力芬2010
Rank: 2
等 级:论坛游民
帖 子:48
专家分:71
注 册:2011-3-17
收藏
得分:0 
回复 4楼 ansic
    long型的数大一点,多谢
2011-03-17 22:57
CrazyChild
Rank: 1
来 自:广东汕头
等 级:新手上路
帖 子:21
专家分:2
注 册:2010-12-31
收藏
得分:0 
回复 2楼 a627677879
调用函数的话空间效率会降低很多吧?
2011-03-17 23:27
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:0 
好可爱

How are you 怎么是你?
How old are you   怎么老是你?
2011-03-18 08:34
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:0 
避免递归 函数调用都要压栈 效率低
2011-03-18 09:47
枫叶无痕
Rank: 2
等 级:论坛游民
帖 子:80
专家分:30
注 册:2011-2-10
收藏
得分:0 
#include<stdio.h>
main()
{
    int i,j,n,k,s;
    scanf("%d",&n);
    for(s=0,i=1;i<=n;i++)
    {
        for(k=1,j=1;j<=i;j++)
        {
            k=k*j;
        }
        s=s+k;
    }
    printf("%d\n",s);
}

这个可以,比较方便
2011-03-18 21:13
dingdaerwxl
Rank: 2
等 级:论坛游民
帖 子:18
专家分:16
注 册:2011-3-17
收藏
得分:0 
以下是引用枫叶无痕在2011-3-18 21:13:22的发言:

#include<stdio.h>
main()
{
    int i,j,n,k,s;
    scanf("%d",&n);
    for(s=0,i=1;i<=n;i++)
    {
        for(k=1,j=1;j<=i;j++)
        {
            k=k*j;
        }
        s=s+k;
    }
    printf("%d\n",s);
}

这个可以,比较方便

顶呵呵
2011-03-19 16:22
快速回复:求助,关于1到20的阶乘和
数据加载中...
 
   



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

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