새소식

Algorithm/파이썬 알고리즘 문제풀이 강의

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

  • -

 

 

 

# 10진수 -> 2진수 변환 : 10진수를 몫이 0이 될때까지 계속 2를 나누고, 나머지를 역순으로 읽으면 된다.
#재귀함수를 이용해서 풀어보자


# 재귀함수 만들 때 이름을 DFS로 하겠다
# 재귀를 할 때는 앞으로 -> if / else로 하겠다.
def DFS (x):
     # 재귀함수 종료 조건: N이 0이면 종료
    if x == 0: 
        return #함수를 종료시키겠다는 뜻
    else:
        print(x%2 , end=' ') #한칸 띄워서 출력
        DFS(x//2)
        
# ex) x = 11 
# D(11) -> D(5) -> D(2) -> D(1) -> D(0)

만약, x=11이라고 했을 때, 

D(11) -> D(5) -> D(2) -> D(1) -> D(0) 순서로 1 1 0 1이 출력된다.

 

11이라는 10진수를 2진수로 변환한 것은, 그 역순인 1 0 1 1이다.

 

*재귀에서, 역순으로 출력하고 싶다면?

 => 출력 print를 호출 밑으로 작성한다 (∵ 재귀함수는 구조상 스택)

def DFS (x):
     # 재귀함수 종료 조건: N이 0이면 종료
    if x == 0: 
        return #함수를 종료시키겠다는 뜻
    else:
        DFS(x//2)
         print(x%2 , end=' ') # ***출력이 호출 밑으로 내려감***

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.