# 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=' ') # ***출력이 호출 밑으로 내려감***