woodstory   4년 전

재귀를 이용하여 문제를 맞히긴 했는데

후진하다가 벽을 만났을 때 return을 해도 계속 돌아갔었습니다

그래서 혹시나 해서 exit(0)를 써봤더니 맞았다고 나왔는데 

왜 return을 만나도 계속 함수가 돌아가는 건가요??

exit(0)가 프로그램을 아예 종료시키는 건 압니다.

niceb5y   4년 전

return;을 만났을 때 프로그램이 종료 되는건 메인 함수에서 return이 실행되는 경우입니다. 위 코드에서는 clean() 함수가 재귀적으로 실행되기 때문에 return을 만났다고 해서 프로그램이 끝날 것이라는 보장이 없습니다.

woodstory   4년 전

그럼 재귀에서 완전히 빠져나오려면 어떻게 해야하나요??

niceb5y   4년 전

다른 전역변수가 '재귀함수를 통해 필요한 값을 얻었다는 사실'을 저장하게 만들고, clean() 함수의 실행마다 그 값을 검사하게 만든다던지 하는 방법이 있을 수 있겠지만, 작성하신 코드의 경우에서는 사용하신 exit()의 사용이 가장 간단해 보입니다.

woodstory   4년 전

감사합니다 ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.