소프트웨어/C++

[2003년 중간 9번] 누적합(cumulative) / 누적곱(factorial) - 재귀 호출(recursive call)

카켈 2007. 2. 25. 04:12



목적
  - 재귀 호출을 실제 수학에 응용한다.

문제

코드

#include <iostream>

using namespace std;

long l_Cumulative(unsigned int uiIn)
{ return uiIn + ( uiIn > 0 ? l_Cumulative(uiIn - 1) : 0); }

double l_Factorial(unsigned int uiIn)
{ return uiIn * ( uiIn > 2 ? l_Factorial(uiIn - 1) : 1); }


int main(void)
{
 unsigned int uiIn;
 cout << "양의 정수 값을 입력하세요 : ";
 cin >> uiIn;

 cout << "1부터 " << uiIn << " 까지의 누적합 : " << l_Cumulative(uiIn) << endl ;
 cout << "1부터 " << uiIn << " 까지의 누적곱 : " << l_Factorial(uiIn) << endl ;

 return 0;
}


해설
  - 삼항 연산자로 판정을 간단하게 해서 누적 합/ 곱을 출력했습니다.
  - 누적 곱(factorial) 인 경우 값이 엄청 크기 때문에 double 형으로 했습니다. 그래도 안되는 경우가 많기 때문에 더 큰 수를 받아 들이는 알고리듬이 따로 존재 합니다.

참고
  - 재귀 호출 관련 문제