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

문제

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

입력

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

출력

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

입력예제

11

출력예제

1011

해결방법

image

  • 2진수 구하는 방법을 알고리즘 화 하여 재귀 함수로 호출되도록 해야 함
  • 출력 순서를 조절 잘 해야 함. (뒤에서부터 출력이기 때문에 재귀 호출 후에 출력으로 함)
  • 재귀함수를 스택으로 추적하기. (헷갈릴때 디버깅 용으로 사용)

코드

import java.util.*;

class Main {
    public void DFS(int n) {
        // 0이면 리턴한다.
        if (n == 0) return;
        else {
            // 2를 나눈 몫을 호출한다. (십진수를 2로 나눈 나머지가 해당 자리수가 되기 때문)
            // 역순으로 호출해야 나머지가 출력될 때 자리수가 맞는다. 
            // 프린트하고 함수 호출하면 자릿에 맞는 수가 아니게 됨.
            DFS(n / 2);
            System.out.print(n % 2);
        }
    }

    public void solution(int n) {
        DFS(n);
    }

    public static void main(String[] args) {
        Main.Main T = new Main.Main();
        T.solution(11);
        //System.out.println(T.solution(3));
    }
}


© 2024. Chiptune93 All rights reserved.