关于阶乘求和分析

来源:1-5 良好习惯之规范

慕哥3271118

2017-09-19 22:32

  今天老师出了一道题,要我们写出1~
20阶乘之和的代码,s=1!+2!+3!+……+18!+19!+20!想了半天没想到咋分析请教一下咩

写回答 关注

4回答

  • Wingrez
    2017-09-19 23:52:46

    时间仓促,我就没写注释了,如果哪里不懂可以继续问

    treehu... 回复Wingre...

    是啊,的确要64位,我的这个程序不够强壮哈哈哈

    2017-09-22 18:17:51

    共 4 条回复 >

  • Wingrez
    2017-09-19 23:51:55
    #include<stdio.h>
    #define MAXN 100
    int ans[MAXN],num[MAXN];
    int cnt_ans,cnt_num;
    
    void add()
    {
    	int i;
    	int jinwei=0;
    	for(i=0;i<cnt_num;i++)
    	{
    		int temp=ans[i]+num[i]+jinwei;
    		ans[i]=temp%10;
    		jinwei=temp/10;
    	}
    	cnt_ans=cnt_num;
    	if(jinwei>0)
    	{
    		ans[i]=jinwei;
    		cnt_ans++;
    	}
    }
    
    void  factorial(int n)
    {
    	int i;
    	int jinwei=0;
    	for(i=0;i<cnt_num;i++)
    	{
    		int temp=num[i]*n+jinwei;
    		num[i]=temp%10;
    		jinwei=temp/10;
    	}
    	if(jinwei>0)
    	{
    		num[i]=jinwei;
    		cnt_num++;
    	}
    }
    
    void print()
    {
    	int i;
    	for(i=cnt_ans-1;i>=0;i--)
    	{
    		printf("%d",ans[i]);
    	}
    	printf("\n");
    }
    
    int main()
    {
    	int i;
    	ans[0]=num[0]=1;
    	cnt_ans=cnt_num=1;
    	for(i=2;i<=20;i++)
    	{
    		factorial(i);
    		add();
    	}
    	print();
    }


  • treehuang
    2017-09-19 22:56:56

    #include <stdio.h>


    int fun(int i)

    {

    if(i == 1)

    return 1;


    return i * fun(i-1);

    }


    int main(void)

    {

    int i, sum = 0;


    for(i=1; i<=20; i++)

    {

    sum = sum + fun(i);

    }


    printf("%d\n", sum);


    return 0;

    }


    treehu... 回复Wingre...

    #include <stdio.h> long int fun(int i) { if(i == 1) return 1; return i * fun(i-1); } int main(void) { int i; long int sum = 0; for(i=1; i<=20; i++) { sum = sum + fun(i); } printf("%ld\n", sum); return 0; }

    2017-09-21 18:44:02

    共 6 条回复 >

  • Wingrez
    2017-09-19 22:54:31

    因为要计算到20的阶乘,结果值将非常大。所以可以用数组来保存数值的每一位。

    慕哥3271...

    可是不晓得咋分析变量特点

    2017-09-19 22:56:18

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926876 学习 · 21241 问题

查看课程

相似问题