karlin   7년 전

아래의 코드를 제출했더니 AC가 떴는데요

재귀함수가 어떻게 값을 반환하는 건지 잘 모르겠습니다.


재귀함수 solve에서 3으로 나누거나, 2로 나누거나, 1을 빼 거나 셋 중에 하나를 

n이 1일 때까지 반복하다가 n이 1일 때 값을 반환을 해도 반환값을 저장하지 않고

재귀함수 끝에도 다른 return문이 없으니까 컴파일 에러가 떠야하는 게 아닌가요?


(궁금한 게 뭔지는 아는데 말로 풀어쓰려니까 어렵네요ㅠㅠ)

yukariko   7년 전

네. 기저 조건외에 return 문이 없으니 사실 제대로 동작하지 않는 코드입니다.

실제로 저런 코드가 원인이 되어 틀리는 경우도 종종 있습니다.

이 코드가 AC를 받은것은 우연이라고 볼 수 있죠..

C/C++의 단점이기도 합니다.

내부적으론 레지스터의 값이 곧 리턴에 사용되기 때문에 정답을 나타내는 값이 리턴에 사용되는 레지스터안에 들어있다면

정답이 뜰 수 있습니다.

karlin   7년 전

답변 감사합니다!!

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