소프트웨어/C++
[2003년 중간 10번] 강제 대입 (Brute force) 이해 - 재귀호출
카켈
2007. 2. 25. 04:29
목적
- 강제 대입을 재귀 호출에 응용시켜 본다.
문제
#include <iostream>
#include <cmath>
using namespace std;
void do_5_equation(int aIn)
{
if(pow(aIn, 5) - 5 * pow(aIn, 4) - 15 * pow(aIn, 3) + 85 * pow(aIn, 2) - 26 * aIn - 120 == 0)
cout << aIn << " ";
if(aIn > 10) return;
do_5_equation(aIn + 1);
return;
}
int main(void)
{
cout << "주어진 오차방정식의 근 : ";
do_5_equation(-10);
cout << endl;
return 0;
}
해설
- 재귀호출시 중요한 점은 return 시 호출시의 다음 문장으로 돌아 간다는 것입니다.
- 따라서 -10 -9 -8 ... 8 9 10
9
8
7
...
-9
-10
형태로 aIn 값이 변합니다.
이는 스택(통)형으로 수행후 돌아갈 다음 문장 주소를 쌓아 놓았기 때문입니다.
참고
- 재귀 호출 유사 문제
- 유사 문제