winnyiee   5년 전

15 line 에 주석단 그대로입니당!

기존 15,18 라인에 return 하지 않고 binarysearch 함수만 써놓았었는데 그때는 틀린 값이 나왔습니다. 

그런데 어차피 if -else 문이라면 밑에 구절이 실행되지도 않을텐데 왜 return 하지 않으면 값이 다르게 나올까요? 너무 궁금합니다.

dyk777   5년 전

15, 18번째줄은 완전히 같은 맥락을 가지고 있으므로 15번째 줄에 대해서만 간략하게 설명하겠습니다.

binarysearch()는 bool형을 return한다고 맨 처음에 선언했습니다. 그런데 아무것도 return하지 않으면 어떻게 될까요?

return binarysearch(start,mid-1,end)는 해당 binarysearch()함수의 반환값을 받아서 반환하겠다는 말입니다.

그런데 return을 쓰지 않고 binarysearch()만 쓰면, 해당 함수의 반환값은 무시하고 함수를 '실행만' 합니다.

이때 최초로 binarysearch()를 호출한 곳으로의 최종 반환은 결국 무엇일까요?

winnyiee   5년 전

좋은 답변 감사합니다. 아직 완벽히 이해되지 않는 부분이 있습니다 행님.

반환값이 있는 함수지만 반환을 하지 않아도 binary search 에서는 결국 true or false 값이 마지막에 리턴이 되지않나요?

좀 더 솔직히 말해 return binary 와 그냥 binary의 차이점을 모르겠습니다.. 좋은 답변 너무 감사합니다!! 행님~

dyk777   5년 전

우선, void를 제외한 모든 함수에서는 원칙적으로는 return값이 있어야 하는 것으로 기억합니다.

이런 함수들에서 return을 하지 않는것은 undefined behavior인 것으로 알고 있는데,

이때 반환될 값은 0일지 1일지, 혹은 2634521일지 NULL일지, 아무도 알지 못합니다.

return binary는 어떤 값이 반환될 지 정확히 명시해줍니다. "binarysearch()를 호출해서, 여기서 넘어온 값을 반환하겠다." 라는거죠.

그런데 그냥 binary만 하게 되면, 그 함수를 위에서도 말했듯이 '실행만' 합니다. 어떤 값을 넘겨줄지 알려주지 않았기 때문에 문제가 생긴다는 겁니다.

winnyiee   5년 전

아 알겠습니다! 함수 선언 형식에 따라 명확히 리턴하지 않으면 임의의 오류가 생기는 거군요.

정말정말 친절한 설명 감사합니다 형님.

형님의 앞길에 장미꽃 한송이 놓아 드리면 염원이 없을 것입니다.

Cheers, bro.

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