C++ 程式:求調和級數的和
在這個問題中,我們給定三個數字 a、d 和 n。我們的任務是建立一個 C++ 程式來求調和級數的和。
調和級數是一個級數,其倒數構成一個等差級數。即,如果對於一個調和級數 A1、A2、A3… An,存在一個等差級數 1/A1、1/A2、1/A3。
因此,一般的調和級數為
1/a, 1/(a+d), 1/(a+2d), … 1/(a + nd)
其中 1/a 是第一項。而 d 是反向等差級數的公差。
問題描述 - 在這裡,我們將給出調和級數的第一項 a、公差 d 和項數 n,我們需要找到它的和。
讓我們舉個例子來理解這個問題
輸入
a = 3, d = 2, n = 5
輸出
0.878211
解釋
調和級數為 ⅓、⅕、1/7、1/9、1/11。
Sum = ⅓ + ⅕ + 1/7 + 1/9 + 1/11 = 0.878211
解決方案
我們將迭代到第 n 項,找到調和級數每一項的值,並將其加到 sumVar 中。最後返回 sumVal。
演算法
初始化 - sumVal = 0,term = 0;
- 步驟 1 - 迴圈 i 從 1 到 n
- 步驟 1.1 - 找到該項,term = 1/( a + (i-1)*(d)。
- 步驟 1.2 - 更新 sumVal,sumVal += term。
- 步驟 2 - 列印 sumVal。
程式示例,演示解決方案的工作原理
示例
#include <iostream> using namespace std; float findSeriesSum(int a, int d, int n){ float sumVal = 0; float term = 0; for(float i = 1; i <= n; i++){ term = (1.0)/(float)(a + (i-1)*d); sumVal += term; } return sumVal; } int main(){ int n = 5, a = 3, d = 2; cout<<"The sum of HP is "<<findSeriesSum(a, d, n); return 0; }
輸出
The sum of HP is 0.878211
另一種方法可以使用遞迴函式來求和。
程式示例,演示解決方案的工作原理
示例
#include <iostream> using namespace std; float findSeriesSum(int a, int d, int n){ if(n == 1){ return (float)(1.0)/a; } float term = (1.0)/ (float)(a + (n-1)*d); return term + findSeriesSum(a, d, n-1); } int main(){ int n = 5, a = 3, d = 2; cout<<"The sum of HP is "<<findSeriesSum(a, d, n); return 0; }
輸出
The sum of HP is 0.878211
廣告