1. 문제
10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요.
단 재귀함수를 이용하시오.
2 - 1. 나의 풀이
이전 문제에서 재귀함수를 호출할때 코드 순서에 따라서
호출한 순서대로 리턴 값이 나오는지, 호출한 순서 반대로 리턴 값이 출력되는지 알 수 있었다.
10진수를 2진수로 변환하는 수학적 방식을 생각해보자 (10진수 13을 예시로)
1. 13을 2로 계속 나눈다.
2. 나눴을 때 나머지를 역순으로 출력한다.
13 ㅡ> 몫: 6, 나머지: 1 ㅡ>몫: 3, 나머지: 0 ㅡ> 몫: 1, 나머지: 1 ㅡ> 몫: 0, 나머지 :1
나머지를 역순으로 출력하면 1101로 2진수 변환이 된다.
즉, 재귀함수를 먼저, 그 리턴값을 다음 코드에 작성하면 된다.
2- 2. 나의 코드
package BFS_DFS;
import java.util.*;
public class dfs02 {
private static void dfs(int n) {
if(n==0) return;
else{
dfs(n/2);
System.out.print(n%2);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
dfs(n);
}
}
3. 강의
나와 같다.
4. 얻어갈 점
1. 순서에 따른 출력 값
'알고리즘 > Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글
6. 부분 집합 구하기(DFS) (0) | 2023.11.16 |
---|---|
5. 이진트리순회(DFS: Depth - First - Searching) (1) | 2023.11.15 |
4. 피보나치 재귀(메모이제이션) (0) | 2023.11.14 |
3. 팩토리얼 (재귀) (0) | 2023.11.14 |
1. 재귀함수 (스택프레임) 중요! (0) | 2023.11.09 |