求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 程式設計