Dog라는 객체가 10000개가 있는 가정하에
모든 Dog객체(10000개)가 30cm간격으로 뼈를 찾습니다.
그리고 뼈를 찾아주는 인터페이스가 있는데 재귀의 함수로 구현하였습니다.
Code: Select all
class Dog
{};
static int Bone = 100000;
bool RequestLength(Dog *dog, int addRange)
{
if(addRange < 100000)
{
return RequestLength(dog, addRange + addRange);
}
return true;
}
void RequestFindStart(Dog *dog)
{
int AddRange = 30;
if(RequestLength(dog, AddRange + AddRange))
cout<<"찾았네"<<endl;
}
위 상환에서 RequestLength(dog, addRange + addRange); 문에서 addRange + addRange를 전달하고 나면
RequestLength(Dog *dog, int addRange)에서는 addRange값이 0으로 타나나는 형상이 생깁니다.
그래서 무한 재귀로 들어가버리더군요.
이런상황은 어떻게 해석하고 해결해야될까요?
비슷한 경험이 있으신분 계신가요?
함께 고민할사람이 없어서 글한번 올립니다.