实例25- 求1+2!+3!+...+20!的和


前言

本系列为C语言菜鸟100道基础经典例题详解刷题系列。点滴成长,一起逆袭。


一、题目描述

求1+2!+3!+…+20!的和


二、程序分析

此程序只是把累加变成了累乘。

三、解题

(1)解题方法一

1. 思路

直接求出每个数的阶乘然后相加
在这里插入图片描述

2. 程序运行代码

for循环

#include<stdio.h>
int main()
{
    int i,j;
    double sum,jc;
    for(i=1;i<=20;i++){//1+2!+3!+...+n!则for(i=1;i<=n;i++)
    	jc=1;//必须有!!!
    	for(j=1;j<=i;j++){
    		jc*=j;
		}
		sum+=jc;
	}
	printf("%lf",sum);
    return 0;
}

do……while循环

#include<stdio.h>
int main()
{
    int i,j;
    double fac=1,sum=0;
    for(i=1;i<=20;i++){
    	fac=1,j=1;
    	do{
    		fac*=j;
    		j++;
		}while(j<=i);//求各项阶乘
    	sum+=fac;//求各项阶乘之和
	}
    printf("%lf",sum);
    printf("\n");
    return 0;
}

3.程序运行结果

2561327494111820313.000000

(2)解题方法二

1. 思路

递归
算出前一项的阶乘并保存,在算后一项阶乘只需要乘以后一项的那个数就行
例如: 已知4! 求5! 则是4!*5

2. 程序运行代码(1)推荐方法

#include<stdio.h>
int main()
{
    int i;
    double fac=1,sum=0;
    for(i=1;i<=20;i++){
    	fac=fac*i;//求各项阶乘
    	sum+=fac;//求各项阶乘之和
	}
    printf("%lf",sum);
    printf("\n");
    return 0;
}

2. 程序运行代码(2)

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

3. 程序运行结果

2561327494111820300.000000


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值