85번째 줄이 실행된 후에는 무엇이 반환될까요?
3190번 - 뱀
반환되지 않습니다. 재귀 호출된 함수가 반환을 했다고 해서 자신도 반환을 하는 것은 아닙니다.
재귀 호출은 다른 함수를 호출하는 것과 다를 것이 없습니다. 예를 들어, 그 함수의 마지막 부분에 pow(1, 1);을 호출한다고 해서 pow의 반환값을 play 함수가 반환하지는 않을 것입니다. 마찬가지로 play를 재귀호출 하더라도 재귀호출된 play가 반환한 값을 자신도 그대로 반환하지는 않습니다. 이 부분은 아무것도 반환하지 않아 undefined behavior가 발생하는 부분입니다.
재귀호출된 함수가 반환한 값을 자신도 그대로 반환하려면 여타 함수를 호출할 때와 마찬가지로 return play(count + 1, dc_count, direction, x, y, tail_x, tail_y); 와 같이 return을 명시해줘야 합니다.
댓글을 작성하려면 로그인해야 합니다.
kimgyuae 2년 전
어디서 WithoutReturning인지 찾아주실 분 구합니다!
자꾸 런타임 에러가 뜨네요... 반례는 질문을 통해서 다 확인했습니다.
디버깅의 경우, 스택 메모리 1MB를 초과하는 경우만 오류가 나서 스택 메모리를 128MB로 변경해서 했더니 해결됐습니다.
다 return이 제대로 있는 거 같은데 못 찾겠네요...