목록recursive (3)
개발자는 기록이 답이다

6. 부분집합 구하기(DFS) 단, 공집합은 출력하지 않습니다. 예시 입력 1 3 예시 출력 1 1 2 3 1 2 1 3 1 2 3 2 3 3은 1,2,3이 집합의 원소입니다. 부분집합은 2의 3제곱해서 8개 인데, 공집합 배니까 7개만 출력됩니다. 이진 트리로 2 갈래로 뽑는 상태 트리를 만들면 됩니다. 어떤 상태를 표현하는 트리를 상태 트리라고 합니다. {1,2,3} 집합이 있을때 원소를 뽑아내서 부분집합을 만들어 내려고 할때, 1을 넣을 수도 있고 넣지 않을 수도 있습니다. 2를 넣을 수도 있고 넣지 않을 수도 있습니다. 3을 넣을 수도 있고 넣지 않을 수도 있습니다. 숫자 하나 당 2가지 경우가 존재합니다. 이렇게 곱하면 총 8가지입니다. 원소가 n개인 집합의 개수는 2의 n제곱이다. - 공집합도..

2. 이진수 출력(재귀) 예시 입력 1 11 예시 출력 1 1011 10진수를 2진수로 바꿀때 나눈 나머지가 2진수가 됩니다. public class Main { public void DFS(int n) { if(n == 0) return; else { System.out.print(n+" "); DFS(n/2); } } public static void main(String[] args) { Main T = new Main(); T.DFS(11); } } 11 5 2 1 목표는 몫이 아니라 나머지이기 때문에 아래처럼 코드를 수정해줍니다. 또한 1011순서로 출력되기 위해 print함수를 DFS호출하는 아래에 넣어줍니다. public class Main { public void DFS(int n) { i..

1. 재귀함수(스택프레임) 예시 입력 1 3 예시 출력 1 1 2 3 public class Main { public void DFS(int n) { if (n == 0) return; else { System.out.print(n + " "); // (1) 3 2 1 DFS(n - 1); System.out.print(n + " "); // (2) 1 2 3 } } public static void main(String[] args) { Main T = new Main(); T.DFS(3); } } 위의 코드에서 보는 것 처럼 출력을 몇번째 줄에서 하느냐에 따라 반환값이 다르게 나타난다. 1번의 경우 3 2 1로 출력되고, 2번은 1 2 3으로 출력된다. 재귀함수 위에 놓는지 아래에 놓는지에 따라 출력..