14503번 - 로봇 청소기
재귀를 이용하여 문제를 맞히긴 했는데
후진하다가 벽을 만났을 때 return을 해도 계속 돌아갔었습니다
그래서 혹시나 해서 exit(0)를 써봤더니 맞았다고 나왔는데
왜 return을 만나도 계속 함수가 돌아가는 건가요??
exit(0)가 프로그램을 아예 종료시키는 건 압니다.
return;을 만났을 때 프로그램이 종료 되는건 메인 함수에서 return이 실행되는 경우입니다. 위 코드에서는 clean() 함수가 재귀적으로 실행되기 때문에 return을 만났다고 해서 프로그램이 끝날 것이라는 보장이 없습니다.
그럼 재귀에서 완전히 빠져나오려면 어떻게 해야하나요??
다른 전역변수가 '재귀함수를 통해 필요한 값을 얻었다는 사실'을 저장하게 만들고, clean() 함수의 실행마다 그 값을 검사하게 만든다던지 하는 방법이 있을 수 있겠지만, 작성하신 코드의 경우에서는 사용하신 exit()의 사용이 가장 간단해 보입니다.
감사합니다 ㅎㅎ
댓글을 작성하려면 로그인해야 합니다.
woodstory 4년 전
재귀를 이용하여 문제를 맞히긴 했는데
후진하다가 벽을 만났을 때 return을 해도 계속 돌아갔었습니다
그래서 혹시나 해서 exit(0)를 써봤더니 맞았다고 나왔는데
왜 return을 만나도 계속 함수가 돌아가는 건가요??
exit(0)가 프로그램을 아예 종료시키는 건 압니다.