소프트웨어/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 형으로 했습니다. 그래도 안되는 경우가 많기 때문에 더 큰 수를 받아 들이는 알고리듬이 따로 존재 합니다.
참고
- 재귀 호출 관련 문제