【C语言】求阶乘与阶乘之和
程序员文章站
2024-03-15 17:15:36
...
中学我们都学习了阶乘的求法,比如要求整数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*i
sum += ret;//sum=sum+ret
}
printf("sum = %d\n", sum);
system("pause");
return 0;
}
输出结果: