문제 내용은 입력으로 숫자를 받아 출력의 내용을 만들어 뽑아줘야 하는데, 규칙을 잘 체크해야 이후 코딩 진행이 가능하다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
recursive(count, "");
}
public static void recursive(int num, String prefix) {
String startMessage = prefix + "\"재귀함수가 뭔가요?\"";
String question = prefix + "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n"
+ prefix + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n"
+ prefix + "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"";
String answer = prefix + "\"재귀함수는 자기 자신을 호출하는 함수라네\"";
String endMessage = prefix + "라고 답변하였지.";
if (num == 0) {
System.out.println(startMessage);
System.out.println(answer);
System.out.println(endMessage);
return;
}
System.out.println(startMessage);
System.out.println(question);
recursive(num - 1, prefix + "____");
System.out.println(endMessage);
}
}
문제를 풀어보자면 어느 한 컴퓨터공학과.. 이 부분은 처음에 무조건 나오기 때문에, 재귀 전 호출하면 되고 그 외에는 재귀함수가 뭔가요? / 잘 들어보게. ~ 한 선비가 물었어. 부분만 반복되고 맨 마지막에는 잘 들어보게가 빠지고 대신 재귀함수는 자기 자신을.. 이런 부분이 들어가면서, 이후로는 라고 답변하였지 를 출력하면서 끝나게 되는데
고정적인 부분인 재귀함수는 자기 자신을.. 만 주의해서 반복시켜주면 된다는 얘기인데, 재귀로 호출할 때마다 재귀함수가 뭔가요? / ~ 잘 들어보게까지 호출한 다음 재귀를 한번 더 호출하고 횟수를 1씩 줄이고, ____를 붙여 나가면서 마지막 횟수에 잘 들어보게가 빠지고 재귀함수는 자기 자신을..이 들어온 뒤 라고 답변하였지. 쭉쭉 뽑으면서 끝내주면 끝이다.
문제는 이해하고 나면 단순한데, 이해하는 과정이 어렵기 때문에 이 부분을 조심해서 풀어줘야 한다.
Leave a Reply