|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求 1 + 1 * 2 + 1 * 2 * 3 + ... + 1 * 2 * 3 * ... * n 的数
代码应该没问题
但是输入2的时候应该计算的是1 + 1 * 2,结果是3
可是终端上结果是-2144696064
代码如下:- #include <bits/stdc++.h>
- using namespace std;
- int factorial(int);
- int main()
- {
- int n,sum = 0;
- cout<<"Input a number: ";
- cin>>n;
-
- cout<<"1+1*2+1*2*3+...+1*2*3*...*n = ";
-
- for (int i = 1;i <= n;i++)
- {
- for (int j = 1;j <= i;j++)
- {
- sum += factorial(i);
- }
- }
-
- cout<<sum;
-
- return 0;
- }
- int factorial(int num)
- {
- int last;
-
- num++;
- for (int i = 2;i <= num;i++)
- {
- last = i - 1;
-
- num += last * i;
- }
-
- return num;
- }
复制代码
这里 n 就是题目里的n
sum是得数
函数factorial是在计算时做一个阶乘
大佬帮忙看一下代码哪里有错!!!
本帖最后由 sunrise085 于 2020-9-21 08:57 编辑
第一、本质是对多个阶乘求和,求和运算为什么用双层循环?
第二、你的阶乘是怎么算的,我实在是看不懂。。num作为循环结束条件,而num一直在变化,阶乘为什么一直在相加?
- #include <bits/stdc++.h>
- using namespace std;
- int factorial(int);
- int main()
- {
- int n,sum = 0;
- cout<<"Input a number: ";
- cin>>n;
-
- cout<<"1+1*2+1*2*3+...+1*2*3*...*n = ";
-
- for (int i = 1;i <= n;i++)
- {
- sum += factorial(i);
- }
-
- cout<<sum;
-
- return 0;
- }
- int factorial(int num)
- {
- int result=1;
- for (int i = 1;i <= num;i++)
- {
- result *= i;
- }
-
- return result;
- }
复制代码
若不是为了使用阶乘函数的话,可以更简单一些
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n,sum = 0,temp=1;
- cout<<"Input a number: ";
- cin>>n;
-
- cout<<"1+1*2+1*2*3+...+1*2*3*...*n = ";
- for (int i = 1;i <= n;i++)
- {
- temp*=i;
- sum += temp;
- }
- cout<<sum;
- return 0;
- }
复制代码
|
|