이 튜토리얼에서는 주어진 시리즈 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 += 문장이 반복 범위 안에 포함되도록 해야 합니다. 그렇지 않으면 마지막 항만 더해져 잘못된 결과가 나올 수 있습니다.