Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 재귀 함수로 문자열 뒤집기: 예제 코드와 상세 설명

재귀(Recursion) 기법을 사용하여 문자열을 뒤집어야 하는 경우, 사용자가 직접 정의한 메서드와 재귀 호출을 함께 활용하게 됩니다.

재귀는 하나의 큰 문제를 잘게 나눈 작은 단위의 결과를 먼저 계산한 뒤, 이 조각들을 차례로 결합하여 최종적으로 전체 문제의 해답을 만들어 내는 방식으로 동작합니다.

재귀로 문자열을 뒤집는 원리

문자열 뒤집기의 핵심 아이디어는 간단합니다. 문자열의 첫 번째 문자를 분리해 뒤쪽으로 보내고, 나머지 부분에 대해 같은 작업을 반복하는 것입니다. 문자열이 빈 값이 되면 재귀 호출이 멈추면서 각 단계의 결과가 역순으로 연결됩니다.

예제 코드

아래는 파이썬으로 구현한 데모입니다.

def reverse_string(my_string):
   if len(my_string) == 0:
      return my_string
   else:
      return reverse_string(my_string[1:]) + my_string[0]
my_str = str(input("Enter the string that needs to be reversed : "))
print("The string is :")
print(my_str)
print("The reversed string is :")
print(reverse_string(my_str))

실행 결과

Enter the string that needs to be reversed : Williw
The string is :
Williw
The reversed string is :
williW

코드 설명

  • 'reverse_string'이라는 이름의 메서드를 정의하며, 이 함수는 문자열을 매개변수로 받습니다.
  • 함수는 먼저 문자열의 길이를 검사합니다. 길이가 0이 아니라면, 문자열의 첫 번째 문자를 제외한 나머지 부분에 대해 자기 자신을 다시 호출하고, 그 반환 결과 뒤에 첫 번째 문자를 이어 붙입니다.
  • 길이가 0인 경우(재귀의 종료 조건)에는 빈 문자열을 그대로 반환하여 재귀 호출을 마무리합니다.
  • 함수 외부에서는 사용자에게 뒤집을 문자열을 입력받습니다.
  • 입력받은 문자열을 콘솔에 출력합니다.
  • 해당 문자열을 인자로 전달하여 재귀 함수를 호출합니다.
  • 뒤집힌 문자열이 최종 결과로 콘솔에 출력됩니다.

재귀 호출 과정 예시

입력값이 "Williw"일 때 함수는 다음과 같이 동작합니다.

  • reverse_string("illiw") + "W"
  • reverse_string("lliw") + "i" + "W"
  • reverse_string("liw") + "l" + "i" + "W"
  • reverse_string("iw") + "l" + "l" + "i" + "W"
  • reverse_string("w") + "i" + "l" + "l" + "i" + "W"
  • reverse_string("") + "w" + "i" + "l" + "l" + "i" + "W" → "williW"

참고 사항

재귀 방식은 개념을 이해하기에 좋지만, 문자열 길이가 길어지면 함수 호출이 그만큼 많아져 성능이 떨어질 수 있습니다. 또한 파이썬은 기본 재귀 깊이 제한(약 1,000회)이 있으므로, 실무에서는 슬라이싱(my_string[::-1])이나 반복문을 활용한 방식이 더 효율적일 수 있습니다.