baraba6u   4년 전

다음 코드는 이진탐색을 재귀로 구현한 함수입니다.


여기서 수업시간에 교수님께서 

mid index를 기준으로 분활하고 함수를 호출할때 return을 붙이는것이 맞느냐 안맞느냐에 의견차이가 생겼는데요

저는 return을 안붙여도 BS(arr,target,mid+1,right)이라는 함수가 호출될때
 
호출된 부분에 그 함수가 호출되면서  아래 코드처럼 복사되기 때문에

올바르다고 생각했고

교수님께서는 return을 붙이지 않으면 재귀가 아닐뿐더러

잘못된 코딩을 그냥 컴파일러가 고쳐준것이라고 말씀하셨습니다.

재귀함수를 어떻게 이해하는것이 정확한가요?

ntopia   4년 전

복사되는게 아닙니다

그냥 다른 함수를 부르는 것 이라고 생각하시는게 편할 것 같네요

baraba6u   4년 전

그래서 return 을 붙이는게 맞나용 아니면 아닌가용 아니면 상관 없나용?

ntopia   4년 전

당연히 return 을 붙여야  함수 결과를 전달할 수 있겠죠

ntopia   4년 전

return -1;   이나 return mid;   에서 리턴한 결과를 차례차례 상위로 돌려줘서

결국 최초에 BS를 부른 지점에서 그 값을 받아볼 수 있게 되는 것 입니다

baraba6u   4년 전

감사합니당

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