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

文章目录

  • 前言
  • 一、题目描述
  • 二、程序分析
  • 三、解题
    • (1)解题方法一
      • 1. 思路
      • 2. 程序运行代码
      • 3.程序运行结果
    • (2)解题方法二
      • 1. 思路
      • 2. 程序运行代码(1)
      • 2. 程序运行代码(2)
      • 3. 程序运行结果


前言

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


一、题目描述

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


二、程序分析

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

三、解题

(1)解题方法一

1. 思路

直接求出每个数的阶乘然后相加

2. 程序运行代码

#include
int main()
{
    int i,j;
    double sum,jc;
    for(i=1;i<=20;i++){
    	jc=1;
    	for(j=1;j<=i;j++){
    		jc*=j;
		}
		sum+=jc;
	}
	printf("%lf",sum);
    return 0;
}

3.程序运行结果

2561327494111820313.000000

(2)解题方法二

1. 思路

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

2. 程序运行代码(1)

#include 
int main()
{
    int i;
    double sum,mix;
    sum=0,mix=1;
    for(i=1;i<=20;i++)
    {
        mix=mix*i;
        sum=sum+mix;
    }  
    printf("%lf\n",sum);  
}

2. 程序运行代码(2)

#include
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


你可能感兴趣的:(【C语言,c++,算法,c语言)