系列的总和1 +(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+ ...... +(1 + 3 + 5 + 7 + ... + (2n-1))在C ++中

在这个问题上,给我们一个数字n。我们的任务是创建一个程序来查找级数1 +(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+……+(1 + 3 + 5 + 7 +…+(2n-1))。 

让我们举个例子来了解这个问题, 

输入:   n = 5

输出:   55

因此,根据这个问题,假设用户给我们一个数字“ n”,我们必须添加序列1 +(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+…… +(1 + 3 + 5 + 7 +…+(2n-1))。

首先让我们更好地了解本系列的含义。

我们取n = 1,则级数变为1。

我们取n = 2,则级数变为1+(1 + 3),因为最后一项2n-1的值可以计算为2乘以2超过1,即3。

n的值
2n-1
系列变成
1
1
1
2个
3
1+(1 + 3)
3
5
1+(1 + 3)+(1 + 3 + 5)
4
7
1+(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)

解决问题的方法有两种。一种数学方法是可以得到总和的表达式,因此不需要循环。另一个将是在代码中应用两个循环。

使用循环的直接方法

可以看出,级数1 +(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+……+(1 + 3 + 5 + 7 +… +(2n-1))本身就是一个数列。因此,我们将使用嵌套循环。外循环将计算第二项。而内部循环将用于计算术语本身。

示例

#include<stdio.h>

int calcSum(int n){
   int sum = 0;
   for (int i = 1; i <= n; i++) {
      // 项的第一个值始终为1
      int value = 1;
      for (int j = 1; j <= i; j++) {
         sum += value;
         // 下学期
         value += 2;
      }
   }
   return sum;
}

int main(){
   int n = 35;
   printf("The sum of the series upto %d is %d ", n , calcSum(n));

}
输出结果
The sum of the series upto 35 is 14910

该程序的工作:

  • 用户输入n的值。假设2。

  • 声明一个名为“ sum”的变量,其初始值为0

  • 当i = 1时,条件i <= n为true,因此循环将起作用

    • 变量“ ft”的值为1。

    • j的第一个值为1。条件为true,因为j的值等于i的值(即1)。因此j循环起作用

    • ft的值被加到总和上。因此,总和变成等于1的0 + 1。

    • ft的值被修改并增加了2,因此其新值为1 + 2 = 3

    • j的值增加1并变为2。

    • 但是现在for for内部循环的条件是假的,因为j> i现在。因此,退出j循环。

  • 现在i的值增加1并变为2,所以i = 2且条件为i <= n,因此进入循环

    • 变量“ ft”的值再次定义为1

    • 当j的值为1时,循环将按j <i或1 <2的方式工作。

    • ft的值被加到总和上。总和的值已为1。所以总和的新值是1 + 1 = 2

    • ft的值被修改并增加了2,因此ft的新值变为1 + 2 = 3。

    • j的值增加1并变为2。for循环条件成立,因为j等于i。

    • ft的值被加到总和上。总和的值已经是2。所以总和的新值是2 + 3 = 5

    • ft的值被修改并增加了2,因此ft的新值变为3 + 2 = 5。

    • 循环存在

  • 现在i的值增加1并变为3,所以i = 3且条件为假i <= n,因此退出循环。

  • 在屏幕上显示消息和总和值

数学解:

通过找到问题的数学解决方案然后编写代码,将在很大程度上简化我们的代码。

令该系列的总称T n  

在继续进行之前,我们应该知道级数1 + 3 + 5 + 7 + 9…..(2n-1)的总和为n 2, 而级数

1 2 +2 2 +3 2 +4 2 ….n 2  的总和为i   =

用来说明我们代码工作方式的程序

示例

#include<stdio.h>

int calcSum(int n){
   // 所需金额
   return (( (n) * (n + 1) * (2*n + 1 ) )/6 ) ;
}

int main(){
int n = 35;
   printf("The sum of the series upto %d is %d ", n , calcSum(n));

}
输出结果
The sum of the series upto 35 is 14910

以上代码的工作方式: 

例如,假设用户输入的n值为2,则2n-1的值为3,序列变为1+(1 + 3)。

但是,让我们理解并通过代码获取总和。

  • sum()用值2调用该函数

  • 该函数计算as的值5并将其返回给主函数。

  • 屏幕上将显示带有答案的消息。