celina324   1년 전

12 14줄에서 return을 쓰나 안 쓰나 어차피 재귀로 10번쨰 줄 리턴에 무조건 걸리게 되니까 상관없다고 생각했는데

안 쓴 12 14에 한 번이라도 걸리면 none이 들어가더라고요! 

예제 1 하면 {-10: None, 2: None, 3: 2, 6: None, 7: None, 10: None} 이런 dicN이 돼요!

왜 이런 거죠? 

ufshg   1년 전

10번째 줄은 종단점에서의 리턴으로, 확실히 값을 반환합니다.

하지만 그 외에도 리턴을 선언해주셔야하는 이유는 이 함수가 재귀방식이기 때문인데요.

깊이가 2인 재귀방식을 생각해볼게요.

메인 - 재귀1 - 재귀2 순서로 실행되고 재귀2가 종단점을 만나 값을 리턴한다고 가정합시다.

이 경우 재귀2의 리턴값을 받는건 메인이 아니라 재귀 1이에요.

메인 - 재귀1(리턴값 들고있음) 상태가 되는데, 재귀1은 종단점이 아니죠. 왜냐면 재귀2를 호출했었으니까요.

따라서 올라온 리턴값이 아직 메인에 전달되지 않은건데, 종단점 외에 리턴 선언을 안하면 이 값이 전달되지않고 사라집니다.

메인 입장에선 뭐가 리턴되질 않으니 "아 재귀1 이라는 함수의 실행 결과는 None이구나" 하게 되는거죠.

celina324   1년 전

아하 그렇군요!!

이해하기 쉬운 설명 감사드립니다! 즐거운 설날 보내세요!

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