이 튜토리얼에서는 주어진 급수 1/1! + 2/2! + 3/3! + 4/4! + … + n/n!의 합을 구하는 C++ 프로그램을 다룹니다.
n 값이 주어지면, 첫 번째 항부터 n번째 항까지 차례대로 모두 더해 전체 합을 계산하는 것이 목표입니다.
접근 방법
각 항은 i / i! 형태로 이루어져 있습니다. 따라서 반복문으로 1부터 n까지 순회하면서 매번 팩토리얼(i!)을 누적으로 계산하고, 그 값을 분모로 하여 i를 나눈 뒤 합계에 더해주면 됩니다.
예제 코드
#include <iostream>
using namespace std;
// 급수의 합을 계산하는 함수
double calc_sum(int n) {
double sum = 0, fact = 1;
for (int i = 1; i <= n; i++) {
fact *= i; // i! 누적 계산
sum += i / fact; // i/i! 항을 합에 추가
}
return sum;
}
int main() {
int n = 6;
double res = calc_sum(n);
cout << res << endl;
return 0;
}
출력
2.71667
코드 설명
calc_sum() 함수는 변수 fact를 이용해 팩토리얼을 순차적으로 계산합니다. 반복문이 한 번 수행될 때마다 fact에 i를 곱해 i!를 만들고, 이를 분모로 하는 i/i! 값을 sum에 더합니다. 모든 반복이 끝나면 최종 합을 반환합니다.
n = 6일 때 각 항의 값은 다음과 같습니다.
- 1/1! = 1
- 2/2! = 1
- 3/3! = 0.5
- 4/4! ≈ 0.166667
- 5/5! ≈ 0.0416667
- 6/6! ≈ 0.00833333
이들을 모두 더하면 약 2.71667이 되며, 프로그램의 실행 결과와 일치합니다. 참고로 합계는 정확한 값 대신 근삿값으로 출력되므로, 필요하다면 cout.precision() 등을 사용해 소수점 자릿수를 조절할 수 있습니다.