C++ 재귀함수를 바꾸려고 하는데요.
글쓴이: DarkSide / 작성시간: 금, 2011/08/26 - 2:54오후
void recursive_func(int p0, int p1)
{
int p2 = test(p0, p1);
if(p2 == p1) return; //종료
Do_it(p0, p1, p2);
recursive_func(p0, p2);
recursive_func(p2, p1);
}위 코드가 리눅스에서는 실행이 잘되었는데, 윈도에서는 스택 깊이 때문인지 에러가 많이 납니다.
재귀를 쓰지 않고 실행하는 방법이 있을까요?
종료 조건은 반드시 만나게 되어 있습니다.
한 함수에서 두 개로 분지되다 보니 해결책이 떠오르질 않네요.
Forums:


아래처럼 직접 스택을 써서 재귀를 구현하면 되지
아래처럼 직접 스택을 써서 재귀를 구현하면 되지 않을까요..
void func(int p0, int p1) { typedef pair<int,int> p; stack<p> s; s.push(p(p0, p1)); while(!s.empty()) { p x = s.top(); s.pop(); int p0 = x.first; int p1 = x.second; int p2 = test(p0, p1); if(p2 != p1) { Do_it(p0, p1, p2); s.push(p(p0,p2)); s.push(p(p2,p1)); } } }감사합니다.
감사합니다.
댓글 달기