반응형
입력 받은 수를 이진수 변환 - 재귀함수 이용
숫자를 입력받아 이진수로 변환하는 방법은 정말 여러가지가 있지만 재귀호출을 이용하여 작성해보겠다.
숫자를 이진수로 변경하려면 숫자를 2로 나눠서 나머지가 0이면 '0', 나머지가 0이 아니면 '1'을 나오는 순서대로 뒤에서부터 쓰는 것이다.
예를 들어 8을 이진수로 변경한다고 하면
8 // 2 ... 0
4 // 2 ... 0
2 // 2 ... 0
1 // 2 ... 1
되어 '1000' 이 나오게 된다.
def myBinary(num) : # 이진수로 변환하는 함수
if num == 0 : # 기저조건 1
return '0'
elif num == 1 : # 기저조건 2
return '1'
if (num % 2 == 0) :
return myBinary(num // 2) + '0' # 재귀호출
else :
return myBinary(num // 2) + '1'
num = int(input()) # 숫자를 입력받아 int형으로 변환하여 저장함
print(myBinary(num))
재귀함수를 이용하려면 숫자를 2로 나누고, 나머지에 따라 0 또는 1을 붙이는 함수를 계속 호출해야 한다.
myBinary( ) 라는 이진수로 변환해주는 함수를 선언해주었다.
기저조건 1.
num == 0 일때 '0' 을 리턴하는 것은 아예 입력받은 숫자가 0 일때 0 을 반환해 줄 수 있다.
입력 받은 숫자가 0이 아니라면 num == 0 일 수가 없다.
기저조건 2.
num == 1 일때 '1' 을 리턴하는 것은 재귀호출로 수를 계속 2로 나누게 되면 결국 마지막은 1이 남기 때문에 필요하다.
입력 :
8
출력 :
1000
제대로 출력되는 것을 확인할 수 있었다.
반응형
'self.python' 카테고리의 다른 글
[python] isin() 사용해서 데이터 프레임에서 데이터 값으로 행 추출하는 방법 (0) | 2022.05.29 |
---|---|
[python] 데이터 프레임 행(row) 추가하기 (0) | 2022.05.22 |
[python] loc , iloc 으로 행 데이터 접근하기 (0) | 2022.05.19 |
[python] 데이터 프레임 열 순서 변경하는 방법 (0) | 2022.05.17 |
[python] 재귀호출로 최대공약수 구하기 - 유클리드 호제법 이용 (0) | 2022.05.16 |
댓글