park780172   5년 전

우선 첫 번째 코드가 정답 코드이고, 두 번째가 틀린 코드입니다.

두 번째 코드에서는 39를 입력하였을 때, 쓰레기 값이 출력되는 것 같습니다.

아무래도 한 번 구했을 때, 10 이상이면 뭔가 일이 일어나는 것 같은데..

첫 번째 코드는 그냥 바로 digit 함수 내에서 출력이고, 두 번째 코드는 단순 int(=sum)를 return하는 것인데

두 번째 코드는 왜 쓰레기 값이 나오는지 모르겠습니다.

참고로 두 번째 코드에서 printf 으로 digit(s)를 출력도 해보았으나, 역시나 쓰레기 값이 나옵니다.

혹시 몰라서 cout으로 시도해본 것입니다.

djm03178   5년 전

else digit(to_string(sum)); 이건 아무것도 리턴을 하지 않습니다. 문장 그대로, digit이라는 함수를 한 번 호출할 뿐입니다.

재귀호출된 digit이 무언가 리턴을 했더라도, 그건 그 재귀호출된 함수가 리턴했을 뿐 자기 자신이 무언가를 리턴하지는 않습니다.

결국 자신은 아무것도 리턴할 것을 명시하지 않았고, 이 때의 동작은 정의되어 있지 않습니다.

else return digit(to_string(sum)); 으로 써야 합니다.

park780172   5년 전

@djm03178

헉 이런 사소한 실수를...

그냥 아무 생각 없이 코드를 작성해서 그런지

저렇게 작성했는지 꿈에도 몰랐네요..

감사합니다.


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