Algorithm/JS

[알고리즘_Node.js_재귀] 백준 17478번 재귀함수가 뭔가요?

Cune 2022. 8. 25. 21:29

 


 

 

 

 

<풀이 방법>

const input = require("fs").readFileSync("/dev/stdin").toString();
const n = Number(input);

// 최초 1번 나오는 문장
console.log("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");

function chatBot(line, n) {
  
  // n번만큼 공통 반복 문장
  console.log(`${line}"재귀함수가 뭔가요?"`);
  
  if (n == 0) {	// 재귀 마지막 도달시 나오는 문장
    console.log(`${line}"재귀함수는 자기 자신을 호출하는 함수라네"`);
    console.log(`${line}라고 답변하였지.`);	// n+1번 나오기때문에 마지막 도착점에서 한번 출력
    return	// 재귀로 돌아감 
  } 
  console.log(`${line}"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.`);
  console.log(`${line}마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.`);
  console.log(`${line}그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."`);
   

  chatBot(line+"____", n-1);	// n-1로 줄어들면서 계단식 반복

  console.log(`${line}라고 답변하였지.`);	// 재귀 마지막 도달하고나서 돌아오는 곳
}

chatBot("", n);	 // 재귀 함수 실행

 

 

n==0 일때 return 하면서 마지막에 "~라고 답변하였지." 를 반복하는 부분에서 헷갈려서 많이 삽질했다...