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

C++로 급수의 합 구하기: 1/1! + 2/2! + 3/3! + … + n/n!

이 튜토리얼에서는 주어진 급수 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() 등을 사용해 소수점 자릿수를 조절할 수 있습니다.