在C++中求1^2 - 2^2 + 3^2 - 4^2 ... 直到n项的和


在这个问题中,我们给定一个整数N。我们的任务是求1^2 - 2^2 + 3^2 - 4^2 ... 直到n项的和

让我们来看一个例子来理解这个问题:

Input : N = 3
Output : 6

说明 -

12 - 22 + 32 = 1 - 4 + 9 = 6

解决方案方法

解决这个问题的一个简单方法是使用循环。我们将使用迭代器i从1循环到n。

如果i是奇数,则将(i2)添加到总和。

如果i是偶数,则从总和中减去(i2)。最后,在循环结束后返回级数的和。

算法

初始化 - sum = 0。

  • 步骤1 - 循环到n,i -> 1到n

    • 步骤1.1 - 如果i是奇数,则将(i2)添加到sum,如果(i % 2 == 0) => sum += i2

    • 步骤1.2 - 如果i是偶数,则从sum中减去(i2),如果(i % 2 == 0) => sum -= i2

  • 步骤2 - 返回sum。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

示例

程序说明了我们解决方案的工作原理

Open Compiler
#include <iostream> using namespace std; int findSumOfSeries(int n) { int sum = 0; for (int i = 1; i <= n; i++) { if (i % 2 == 0) sum -= (i*i); else sum += (i*i); } return sum; } int main(void) { int n = 5; cout<<"The sum of series is "<<findSumOfSeries(n); }

输出

The sum of series is 15

另一种方法是使用级数求和公式。

如果N是偶数,

sum=1222+3242++(n1)2n2

sum=(12)(1+2)+(34)(3+4)+(n1n)(n1+n)

sum=(1)(3)+(1)(7)+(1)(2n1)

sum=(1)(1+2+3+4++(n1)+n)

sum=(1)[n(n+1)2]

如果N是奇数,

sum=1222+3242++(n2)2(n1)2+n2

sum=(1222+3242++(n2)2(n1)2)+n2

sum={(1)[n(n+1)2]}+n2

sum=(n2+n+2n22)

sum=(n+n2)/2=n(n+1)/2

示例

程序说明了我们解决方案的工作原理

Open Compiler
#include <iostream> using namespace std; int findSumOfSeries(int n) { int sum = 0; if(n % 2 == 0){ sum = (-1)*(n*(n+1))/2; } else { sum = (n*(n+1))/2; } return sum; } int main(void) { int n = 5; cout<<"The sum of series is "<<findSumOfSeries(n); }

输出

The sum of series is 15

更新于:2022年1月27日

736 次浏览

开启您的职业生涯

完成课程后获得认证

开始学习
广告