jsch678   1년 전

세균이 퍼져나가는 것을 구현하기 위해서 다음과 같은 재귀함수를 사용하였습니다.

아래의 두 함수는 5번줄의 if문, 20번줄의 if문을 제외하면 같은 함수인데 상위의 함수를 사용할땐 제대로 동작하고

하위의 함수를 사용할땐 제대로 동작하지 않습니다.

제가 생각하기에는 0일때나 2일때나 어차피 2로 바꿔줘야해서 20번째 줄을 초기에 사용하였는데, RecursionError: maximum recursion depth exceeded in comparison 와 같은 재귀함수 최대깊이 에러가 발생하여서 헤매던 중

설마하는 마음으로 0일때만 재귀함수를 동작하도록 하였더니 제대로 동작했습니다.

왜 이와같은 현상이 일어나는지 궁금합니다.

감사합니다.

neohaps   1년 전

아래의 경우에는 bfs과정에서 이미 확인한 좌표를 막는 부분이 없어 무한루프가 발생하고 무한히 재귀함수가 호출될 것 같습니다.

예를 들어 map(0,0)이 2이고 map(1,0)도 2일 경우 

dfs(0,0)->dfs(1,0)->dfs(0,0)->dfs(1,0)->dfs(0,0)->dfs(1,0)-> ...

이런 식으로 함수가 계속 호출됩니다.

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