재귀함수를 통한 이진수 출력
문제
10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용 해서 출력해야 합니다.
입력
첫 번째 줄에 10진수 N(1<=N<=1,000)이 주어집니다.
출력
첫 번째 줄에 이진수를 출력하세요.
입력예제
11
출력예제
1011
해결방법
- 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));
}
}