中学我们都学习了阶乘的求法,比如要求整数n的阶乘,则n!=n×(n-1)×(n-2)×…×2×1。现在有两个问题,要用C语言编写程序求n的阶乘,以及求1!+2!+3!…+n!,该如何解决呢?
问题1:求n的阶乘。
实现思路:
问题中的n需要我们从键盘输入。要计算n的阶乘,就得有一个变量i从1遍历到n(循环实现),进入循环用一个变量ret(初始值须为1)来“记住”本次的乘积ret×i,随着i的增加,ret=1×1,ret=1×1×2,ret=1×1×2×3…,当i增加到n时,ret=n!,然后输出ret。
程序代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{int n = 0;int i = 0;int ret = 1;scanf("%d", &n);for (i = 1; i <= n; i++){ret *= i;//ret=ret*i}printf("n的阶乘为ret=%d\n", ret);system("pause");return 0;
}
输出结果:
问题2:求sum=1!+2!+3!+…+10!=?
实现思路:
该问题和问题1的实现思路大体上相同,只是在计算出每项后要计算出和。我们可以在问题1的基础上定义一个变量sum,当每项得出结果后加到sum中,sum中的结果随着i的增加依次为:sum=0+1!,sum=1+2!,sum=3+3!…
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{int i = 0;int ret = 1;int sum = 0;for (i = 1; i <= 10; i++){ret *= i;//ret=ret*isum += ret;//sum=sum+ret}printf("sum = %d\n", sum);system("pause");return 0;
}
输出结果: