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

Python에서 재귀 함수로 10진수를 2진수로 변환하는 방법

10진수를 2진수로 변환하는 기본 원리는 매우 간단합니다. 주어진 수를 2로 계속 나누면서 각 단계의 나머지를 구한 뒤, 이 나머지들을 역순으로 출력하면 그것이 바로 2진수 표현입니다.

이 변환 과정은 '자기 자신을 더 작은 값으로 호출하는' 재귀(Recursion) 구조와 완벽하게 잘 맞습니다. 아래 코드는 Python의 재귀 함수를 사용해 이 원리를 구현한 예제입니다.

재귀를 이용한 변환 코드

def tobin(x):
    strbin = ''
    if x > 1:
        tobin(x // 2)   # 몫으로 재귀 호출
    print(x % 2, end='')  # 나머지를 출력

num = int(input('enter a number'))
tobin(num)

실행 결과

위 코드를 실행해 직접 확인해 볼 수 있습니다.

enter a number25
11001
enter a number16
10000

코드 동작 원리

재귀 호출은 일반적인 출력 순서와 반대로 동작한다는 점이 핵심입니다. tobin() 함수 내부에서 print() 문은 재귀 호출 이후에 실행되기 때문입니다.

예를 들어 입력값이 25일 때의 흐름을 살펴보면 다음과 같습니다.

  • tobin(25) → 25 % 2 = 1 (출력 대기)
  • tobin(12) → 12 % 2 = 0 (출력 대기)
  • tobin(6) → 6 % 2 = 0 (출력 대기)
  • tobin(3) → 3 % 2 = 1 (출력 대기)
  • tobin(1) → 조건 불충족으로 재귀 종료, 1 출력

재귀 호출이 끝나며 스택이 풀리면서 나중에 호출된 함수부터 차례로 나머지를 출력하기 때문에, 최종적으로 11001이라는 올바른 2진수가 화면에 표시됩니다.

정리

이처럼 재귀 함수를 활용하면 반복문 없이도 10진수 → 2진수 변환을 간결하게 구현할 수 있습니다. 같은 원리를 응용하면 8진수나 16진수 변환 코드도 손쉽게 작성할 수 있습니다.