求C++中的级数1 + (1+3) + (1+3+5) + (1+3+5+7) + ...... + (1+3+5+7+...+(2n-1))和
我们已经给定了一个数字 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++) {
// the first value of the term is always 1
int value = 1;
for (int j = 1; j <= i; j++) {
sum += value;
// next term
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,for 条件 i<=n 为真,因此,循环将起作用。
- 变量“ft”的值是 1。
- j 的第一个值是 1。条件为真,因为 j 的值等于 i 的值,也是 1。所以,j 循环起作用。
- ft 的值将增加到 sum。因此,sum 变成 0+1 等于 1。
- ft 的值已更改并增加了 2,因此其新值为 1+2 = 3。
- j 的值增加 1,变成 2。
- 但现在内部 for 循环的条件为假,因为现在 j>i。因此,j 循环已退出。
- 现在 i 的值增加 1,变成 2,因此 i=2,条件 i<= n 为真,因此进入循环。
- 变量“ft”的值再次定义为 1。
- 当 j 的值为 1 时,循环将起作用,因为 j<i 或 1<2。
- ft 的值将增加到 sum。sum 的值已经是 1。因此,sum 的新值为 1+1 = 2。
- ft 的值已更改并增加了 2,因此 ft 的新值为 1+2 =3。
- j 的值增加 1,变成 2。for 循环条件为真,因为 j 等于 i。
- ft 的值将增加到 sum。sum 的值已经是 2。因此,sum 的新值为 2+3 = 5。
- ft 的值已更改并增加了 2,因此 ft 的新值为 3+2 =5。
- 循环存在
- 现在 i 的值增加 1,变成 3,因此 i=3,条件 i<= n 为假,因此退出循环。
- 在屏幕上打印 sum 的消息和值。
数学解
通过找到该问题的数学解并编写代码,将大大简化我们的代码。
设该系列的一般项 Tn 为
在进一步进行之前,我们应该知道 1+3+5+7+9…..(2n-1) 系列的总和是 n2, 系列
12+22+32+42….n2 的总和是 i2 =
说明我们代码工作原理的程序
实例
#include<stdio.h>
int calcSum(int n){
// required sum
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)。
但让我们通过代码理解并获取总和。
- 使用 2 的值调用函数 sum()。
- 函数将 的值计算为 5,并将其返回给 main 函数。
- 带着答案的消息将打印在屏幕上。
广告
数据结构
计算机网络
关系型数据库管理系统
操作系统
Java 编程
iOS 编程
HTML 编程
CSS 编程
安卓编程
Python 编程
C 语言编程
C++ 编程
C# 编程
MongoDB 数据库
MySQL 数据库
Javascript 编程
PHP 编程