Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 시리즈 1 + 1/2² + 1/3³ + … + 1/nⁿ의 합 구하기

이 튜토리얼에서는 주어진 시리즈 1 + 1/2² + 1/3³ + … + 1/nⁿ의 합을 구하는 C++ 프로그램을 살펴보겠습니다.

이 문제에서는 n 값이 입력으로 주어지며, 첫 번째 항부터 n번째 항까지 모든 항을 차례대로 더해 시리즈의 전체 합을 계산하는 것이 목표입니다.

접근 방법

시리즈의 각 항은 1/ii 형태로 일반화할 수 있습니다. 따라서 반복문으로 i를 1부터 n까지 증가시키면서 각 항을 계산하고 누적 합계에 더하면 됩니다.

  • i번째 항 = 1 / ii
  • C++의 pow() 함수를 사용하면 거듭제곱 값을 손쉽게 계산할 수 있습니다.
  • 반복이 끝난 뒤 누적된 합계를 반환합니다.

예제 코드

#include <iostream>
#include <math.h>
using namespace std;

// 시리즈의 합을 계산하는 함수
double calc_sum(int n) {
    double sum = 0.0;
    for (int i = 1; i <= n; i++) {
        sum += 1 / pow(i, i); // i번째 항을 누적
    }
    return sum;
}

int main() {
    int n = 5;
    double res = calc_sum(n);
    cout << res << endl;
    return 0;
}

출력

1.29126

코드 설명

calc_sum() 함수는 매개변수로 받은 n만큼 반복문을 실행하며, 각 반복에서 1/pow(i, i)로 해당 항을 계산해 sum 변수에 누적합니다. 모든 항을 더한 뒤 최종 합계를 반환하고, main() 함수에서는 n = 5일 때의 결과를 화면에 출력합니다.

n = 5인 경우 각 항의 값은 1, 0.25, 약 0.03704, 약 0.00391, 0.00032이며, 이를 모두 더하면 약 1.29126이 됩니다.

주의: 반복문 안에서 항을 누적할 때는 중괄호 { }를 사용해 sum += 문장이 반복 범위 안에 포함되도록 해야 합니다. 그렇지 않으면 마지막 항만 더해져 잘못된 결과가 나올 수 있습니다.