본문 바로가기

Java/Java 알고리즘 인프런

[Ch.07 - Recursive] 02. 재귀함수를 이용한 이진수 출력

728x90
반응형

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

10진수 N이 입력되면 2진수로 변환해 출력하는 프로그램을 작성하세요

(단, 재귀함수를 이용해 출력)

 

입력설명

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

 

출력설명

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

 

입력예제

11

 

출력예제

1011

 


#main 함수, DFS 함수, 솔루션함수

  1. main 함수 : int n변수를 입력받아, solution(n)을 통해 함수 호출
  2. solution 함수 : 파라미터로 받은 n을 이용해 재귀함수 호출
  3. DFS 함수 : n==0이 될때까지 재귀함수 호출
package recursive.ch07;

import java.util.Scanner;

public class Recursive02 {
	//이진수 출력
	//10진수 입력시 2진수로 변환해 출력
	
	public static void main(String[] args) {
		Recursive02 T = new Recursive02();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		T.solution(n);
		kb.close();
	}
	public void solution(int n) {
		DFS(n);
	}
	public void DFS(int n) {
		if(n==0)
			return;
		else {
			DFS(n/2);
			//10진수 n을 2로 나누어 ->만약 4라면 -> 2 -> 1 -> 0 -> 4%2 =0,2%2=0, 1%2=1,  -> 100
			System.out.print(n%2);
		}
	}

}

 

solution함수 없어도

->DFS함수에서 재귀함수 구현 가능

package recursive.ch07;

import java.util.Scanner;

public class Recursive02 {
	//이진수 출력
	//10진수 입력시 2진수로 변환해 출력
	
	public static void main(String[] args) {
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		DFS(n);
		kb.close();
	}
    
	static void DFS(int n) {
		if(n==0)
			return;
		else {
			DFS(n/2);
			//10진수 n을 2로 나누어 ->만약 4라면 -> 2 -> 1 -> 0 -> 4%2 =0,2%2=0, 1%2=1,  -> 100
			System.out.print(n%2);
		}
	}

}
728x90
반응형