이 문제에서 우리는 세 개의 숫자, d, n을 받습니다. 우리의 임무는 C++에서 고조파 급수의 합을 찾는 프로그램을 만드는 것입니다.
고조파 진행 역수는 산술 진행이 되는 급수입니다. 즉. 고조파 진행 A1, A2, A3.. An의 경우 산술 진행 1/A1, 1/A2, 1/A3이 있습니다.
따라서 일반 HP는
1/a, 1/(a+d), 1/(a+2d), … 1/(a + nd)
여기서 1/a는 첫 번째 항입니다. 그리고 d는 reversedAP의 공차입니다.
문제 설명 − 여기에서 첫 번째 항 a, 공차 d, 항의 개수 n이 주어집니다. HP와 우리는 그 합을 찾아야 합니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
a = 3, d = 2, n = 5
출력
0.878211
설명
HP는 ⅓, ⅕, 1/7, 1/9, 1/11입니다.
Sum = ⅓ + ⅕ + 1/7 + 1/9 + 1/11 = 0.878211
솔루션 접근 방식
이 n번째 항을 반복하고 HP의 각 항 값을 찾아 sumVar에 추가합니다. 그리고 마지막에 sumVal을 반환합니다.
알고리즘
초기화 - sumVal =0, 항 =0;
- 1단계 − i -> 1에서 n
- 에 대한 루프
- 1.1단계 - 항을 찾으십시오. 항 =1/( a + (i-1)*(d).
- 1.2단계 − sumVal, sumVal +=용어 업데이트
- 2단계 − 합계를 인쇄합니다.
우리 솔루션의 작동을 설명하는 프로그램
예시
#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