이 예제 출력을 보고 어떻게 구현할지 생각해봤다.
1. 메인함수에서 "어느 한~~"를 출력한다.
2. 재귀횟수 N을 입력받는다.
3. 재귀를 시작한다.
3-1 재귀 종료 조건은 함수의 인자가 0일 때로 한다. (메인에서 입력받은 N부터 0까지 감소시키며 재귀)
3-2 재귀를 할 때마다 문장 앞에 "____"의 개수가 배로 늘어나는데, 이는 전역변수에 저장해두고 재귀함수 속 변수에서 복사해서 사용한다. (따로 복사해서 사용하지 않으면 재귀종료조건을 만족하고 리턴될 때, 출력되는 "____"의 개수가 줄어들지 않는다.)
!!! 자바에서 "는 단독으로 출력할 수 없어서 \"라고 써줘야 한다.
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Main{
public static String str = "";
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
f(N);
}
public static void f(int n) {
String line = str;
if(n==0) {
System.out.println(line + "\"재귀함수가 뭔가요?\"");
System.out.println(line + "\"재귀함수는 자기 자신을 호출하는 함수라네\"");
System.out.println(line + "라고 답변하였지.");
return;
}
System.out.println(line + "\"재귀함수가 뭔가요?\"");
System.out.println(line + "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
System.out.println(line + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
System.out.println(line + "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");
str += "____";
f(n-1);
System.out.println(line + "라고 답변하였지.");
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 11729 : 하노이 탑 이동 순서 JAVA 풀이 (0) | 2022.05.23 |
---|---|
[백준] 2447 : 별 찍기 - 10 JAVA 풀이 (0) | 2022.05.23 |
[백준] 10870 : 피보나치 수 5 JAVA 풀이 (0) | 2022.05.22 |
[백준] 10872 : 팩토리얼 JAVA 풀이 (0) | 2022.05.21 |
[백준] 1065 : 한수 JAVA 풀이 (0) | 2022.05.21 |