系列的总和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。
解决问题的方法有两种。一种数学方法是可以得到总和的表达式,因此不需要循环。另一个将是在代码中应用两个循环。
使用循环的直接方法
可以看出,级数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。
但是现在forfor内部循环的条件是假的,因为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,因此退出循环。
在屏幕上显示消息和总和值
数学解:
通过找到问题的数学解决方案然后编写代码,将在很大程度上简化我们的代码。
令该系列的总称Tn 为
在继续进行之前,我们应该知道级数1+3+5+7+9…..(2n-1)的总和为n2, 而级数
12+22+32+42….n2 的总和为i2 =
用来说明我们代码工作方式的程序
示例
#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并将其返回给主函数。
屏幕上将显示带有答案的消息。