-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
문자열 뒤집기 재귀함수 질문드려요
21.04.06 09:41 작성 조회수 294
0
제가 아무리 봐도 이해가 안되서요 ㅠㅠ
def reverse_string(string):
if string == '':
return None
else:
reverse_string(string[1:])
print(string[0])
print(reverse_string('leehojun'))
여기서 leehojun 문자열이 함수 안으로 들어가고
else문으로 가서 reverse_string(string[1:])이 실행이 되잖아요
string[1:] string[0]
eehojun l
ehojun e
hojun e
ojun h
jun o
un j
n u
'' n
'' None
이렇게 정순으로 출력되는거 아닌가요? 이해가 안됩니다 ㅠ
답변을 작성해보세요.
1
제주코딩베이스캠프
지식공유자2021.04.12
안녕하세요 제주코딩베이스캠프입니다.
재귀함수에서는 return문이 시작되는 부분부터 되돌아간다고 생각하면 쉽습니다.
예제에서는 return문이 빈 문자열일 경우에 None을 리턴하죠?
그럼 그 부분부터 이전 호출구문으로 돌아가게 됩니다.
그러니까, reverse_string([1:])의 가장 마지막 부분인 ''(빈문자열)이 매개변수로 들어가는 부분에서 None을 되돌려주며 그 다음문장인 print문이 실행됩니다.
글로만 적으면 이해하기 어려우실까봐 그림으로 작성해보았어요.
else문에서 print가 실행되기 전 함수를 다시 호출하는 부분을 빨간색 화살표로 표현하였고, 빨간 화살표가 모두 끝난 다음, if문에서 빈 문자열을 만났을 경우에 return이 시작되는 부분을 파란 화살표로 표현했어요.
맨 오른쪽에 큰 문자로 표시된 (n, u, j...) 부분이 print(string[0])이 실행된 부분입니다. 조금 이해가 되셨나요?
재귀함수는 처음부터 바로 이해하기는 어려우니 손으로 표를 만들어서 그려보는것도 매우 좋은 방법입니다!
여전히 잘 모르겠으면 언제든지 질문게시판을 이용해주세요 :)
답변 1