c语言编写程序,求1!+2!+......+10!。
时间: 2023-08-03 20:06:11 浏览: 120
C#语言编写求1!+2!+...+10!的源程序
这个问题可以通过循环和递归两种方式来解决。下面分别给出两种方法的代码实现。
方法一:循环
循环方式比较直观,可以依次计算每个数的阶乘,然后将所有结果相加即可。具体步骤如下:
1. 定义一个变量sum来存储结果,初始化为0。
2. 使用循环从1到10遍历所有数字。
3. 在循环中计算当前数字的阶乘。
4. 将计算结果加到sum中。
5. 循环结束后,输出sum的值。
根据上述思路,可以编写如下的C语言代码:
```
#include <stdio.h>
int main()
{
int i, j;
int sum = 0, fact = 1;
for(i = 1; i <= 10; i++)
{
fact = 1;
for(j = 1; j <= i; j++)
{
fact *= j;
}
sum += fact;
}
printf("1! + 2! + ... + 10! = %d\n", sum);
return 0;
}
```
运行结果为:1! + 2! + ... + 10! = 4037913。
方法二:递归
递归方式比较简洁,可以通过定义一个递归函数来计算阶乘。具体步骤如下:
1. 定义一个递归函数fact来计算阶乘。
2. 在递归函数中,首先判断当前数字是否为1,如果是,则返回1。
3. 如果当前数字不是1,则通过递归调用fact函数来计算其前一个数字的阶乘,然后将结果乘以当前数字,得到当前数字的阶乘。
4. 使用循环从1到10遍历所有数字。
5. 在循环中调用fact函数来计算当前数字的阶乘,然后将所有结果相加。
6. 循环结束后,输出所有阶乘的和。
根据上述思路,可以编写如下的C语言代码:
```
#include <stdio.h>
int fact(int n)
{
if(n == 1)
return 1;
else
return n * fact(n-1);
}
int main()
{
int i, sum = 0;
for(i = 1; i <= 10; i++)
{
sum += fact(i);
}
printf("1! + 2! + ... + 10! = %d\n", sum);
return 0;
}
```
运行结果为:1! + 2! + ... + 10! = 4037913。
可以看到,两种方法的输出结果是一样的。
阅读全文