求1+2!+3!+……+n!,n由键盘输入 用双层循环
时间: 2023-11-17 22:00:49 浏览: 93
以下是用双层循环求1+2!+3!+……+n!的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i, j, sum = 0, fac = 1;
printf("请输入一个正整数n:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
fac = 1;
for (j = 1; j <= i; j++) {
fac *= j;
}
sum += fac;
}
printf("1+2!+3!+...+n!的值为:%d\n", sum);
system("pause");
return 0;
}
```
相关问题
用C语言计算:1!+2!+3+……+n!(用双层循环完成)
以下是用C语言计算1!+2!+3+……+n!(用双层循环完成)的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int fun(int x) {
int Sn = 0;
int S;
for (int i = 1; i <= x; ++i) {
S = 1;
for (int j = 1; j <= i; ++j) {
S *= j;
}
Sn += S;
}
return Sn;
}
int main() {
int n;
printf("您需要1到多少的阶乘之和,请输入(此值请小于26)\n");
scanf("%d", &n);
printf("数字1到数字%d各阶乘之和为%d\n", n, fun(n));
system("pause");
return 0;
}
```
题目描述:求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。
题目描述:求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。
解题思路:
1.使用一层for循环,从低位到高位的累加,用sum保存,直至n。
2.使用递归函数计算每个数的阶乘,使用一个for循环计算阶乘数的累加,逐步累加每个数阶乘的结果到总结果中。
3.双层for循环,时间复杂度n*n,不建议使用。
参考代码:
//for循环解决方法
#include<iostream>
using namespace std;
int main(){
int n;
long s=1,sum=0;
cin>>n;
for(int i=1;i<=n;i++){
s*=i;
sum+=s;
}
cout<<sum;
return 0;
}
//递归的方法
#include<iostream>
using namespace std;
long fun(int n){
if(n==1) return 1;
else{
return n*fun(n-1);
}
}
int main(){
int n;
long sum=0;
cin>>n;
for(int i=1;i<=n;i++){
sum+=fun(i);
}
cout<<sum<<endl;
return 0;
}