소프트웨어/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 값이 변합니다.
    이는 스택(통)형으로 수행후 돌아갈 다음 문장 주소를 쌓아 놓았기 때문입니다.

참고
  - 재귀 호출 유사 문제
  - 유사 문제