강의

멘토링

커뮤니티

Inflearn Community Q&A

testerhyuk2142928's profile image
testerhyuk2142928

asked

Jeju Coding Base Camp Code Festival: Python 100 Questions

Recursive function 3_Recursive function case

문자열 뒤집기 재귀함수 질문드려요

Written on

·

501

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

이렇게 정순으로 출력되는거 아닌가요?  이해가 안됩니다 ㅠ

코테 준비 같이 해요! python

Answer 1

1

jejucoding님의 프로필 이미지
jejucoding
Instructor

안녕하세요 제주코딩베이스캠프입니다.

재귀함수에서는 return문이 시작되는 부분부터 되돌아간다고 생각하면 쉽습니다.

예제에서는 return문이 빈 문자열일 경우에 None을 리턴하죠?
그럼 그 부분부터 이전 호출구문으로 돌아가게 됩니다.

그러니까, reverse_string([1:])의 가장 마지막 부분인 ''(빈문자열)이 매개변수로 들어가는 부분에서 None을 되돌려주며 그 다음문장인 print문이 실행됩니다.

글로만 적으면 이해하기 어려우실까봐 그림으로 작성해보았어요.

else문에서 print가 실행되기 전 함수를 다시 호출하는 부분을 빨간색 화살표로 표현하였고, 빨간 화살표가 모두 끝난 다음, if문에서 빈 문자열을 만났을 경우에 return이 시작되는 부분을 파란 화살표로 표현했어요.

맨 오른쪽에 큰 문자로 표시된 (n, u, j...) 부분이 print(string[0])이 실행된 부분입니다. 조금 이해가 되셨나요?

재귀함수는 처음부터 바로 이해하기는 어려우니 손으로 표를 만들어서 그려보는것도 매우 좋은 방법입니다!

여전히 잘 모르겠으면 언제든지 질문게시판을 이용해주세요 :)

testerhyuk2142928's profile image
testerhyuk2142928

asked

Ask a question