문자열 뒤집기 재귀함수 질문드려요
513
작성한 질문수 20
제가 아무리 봐도 이해가 안되서요 ㅠㅠ
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
1
안녕하세요 제주코딩베이스캠프입니다.
재귀함수에서는 return문이 시작되는 부분부터 되돌아간다고 생각하면 쉽습니다.
예제에서는 return문이 빈 문자열일 경우에 None을 리턴하죠?
그럼 그 부분부터 이전 호출구문으로 돌아가게 됩니다.
그러니까, reverse_string([1:])의 가장 마지막 부분인 ''(빈문자열)이 매개변수로 들어가는 부분에서 None을 되돌려주며 그 다음문장인 print문이 실행됩니다.

글로만 적으면 이해하기 어려우실까봐 그림으로 작성해보았어요.
else문에서 print가 실행되기 전 함수를 다시 호출하는 부분을 빨간색 화살표로 표현하였고, 빨간 화살표가 모두 끝난 다음, if문에서 빈 문자열을 만났을 경우에 return이 시작되는 부분을 파란 화살표로 표현했어요.
맨 오른쪽에 큰 문자로 표시된 (n, u, j...) 부분이 print(string[0])이 실행된 부분입니다. 조금 이해가 되셨나요?
재귀함수는 처음부터 바로 이해하기는 어려우니 손으로 표를 만들어서 그려보는것도 매우 좋은 방법입니다!
여전히 잘 모르겠으면 언제든지 질문게시판을 이용해주세요 :)
41번 문제 질문입니다.
0
321
0
94번 질문
0
201
0
알고리즘 강의가 어떤 것인가요?
0
269
1
3:55분부터 이해가 안갑니다
0
273
0
64번문제 작동이 안됩니다
0
274
0
1부터 100까지의 합
0
265
1
왜 '혜원'이 max값으로 출력되는지 모르겠습니다
1
381
1
sorted 와 sort 질문입니다
0
212
1
강의에서 사용하는 문제 제출 플렛폼 사용은?
0
242
0
37번 코드 / 오류 문의
0
317
1
40번질문입니다.
2
366
2
부록 Counter부터 내용이 안보여요
0
413
1
선택정렬 최솟값_인덱스 부분 질문입니다.
0
208
1
코딩문제 채점
0
296
1
자바스크립트 100제란 같은문제일까요?
0
244
1
50번 이후 문제는 안올라온건가요?
0
294
1
99번에 오류가 살짝 있어서 고쳐봤어요
0
298
0
마지막에 numpy 모듈 슬라이싱 사용시
0
264
0
강의에서 문제는 노션에서 복사해서 주피터나 파이썬 IDE복사해서 풀어보는 건가요?
0
334
1
공부 방법에 대해 질문드립니다.
1
281
1
38번 질문입니다.
0
136
0
37번문제 질문이 있습니다
0
126
0
40번 관련 질문드립니다.
0
163
0
학습방식에 대해 질문드립니다.
0
182
1





