재귀함수를 이용한 이진수 출력

10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용해서 출력해야 합니다.

 

▣ 입력설명

첫 번째 줄에 10진수 N(1<=N<=1,000)이 주어집니다.

 

▣ 출력설명

첫 번째 줄에 이진수를 출력하세요.

 

▣ 입력예제 1

11

 

▣ 출력예제 1

1011

 


풀이

재귀함수를 이용한 풀이

 

2 / 11

2 / 5 --- 1

2 / 2 --- 1

   /  1 --- 0

 

  1. 몫이 1일 때까지 나눈 후 몫인 1을 출력
  2. 이때의 나머지 출력
  3. 스택에 쌓인 나머지 출력

순으로 하면 이진수를 출력할 수 있다.


코드

def DFS(x):
    m = x//2
    n = x%2
    if m>1:
        DFS(m)
        print(n, end="")
    elif m==1:
        print(m, end="")
        print(n, end="")
    

if __name__=="__main__":
    n = int(input())
    DFS(n)

 


풀이2

2 / 11

2 / 5 --- 1

2 / 2 --- 1

2 / 1 --- 0

   / 0 --- 1

 

계속 2로 나누고 몫이 0일때 멈추고

나머지만 계속 출력하는 방법도 있다.

 

스택

□                              □

□DFS(0)- return      □

□DFS(1)-7라인복귀   □

□DFS(2)-7라인복귀  □

□DFS(5)-7라인복귀  □

□DFS(11)-7라인복귀 □

□□□□□□□□□□□


코드2

def DFS(x):
    if x==0:
        return
    else:
        DFS(x//2)
        print(x%2, end='')

if __name__=="__main__":
    n = int(input())
    DFS(n)

 

복사했습니다!