Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 고조파 급수의 합을 구하는 프로그램

<시간/>

이 문제에서 우리는 세 개의 숫자, 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