안녕하세요
[node.js] 17478 재귀함수가 뭔가요? (자바스크립트) 재귀 단계 본문
17478 재귀함수가 뭔가요?
재귀함수가 무엇인지 물어보는 학생들을 위한 챗봇의 응답을 출력하는 프로그램을 만들어보자. 교수님이 출력을 원하는 재귀 횟수 N(1 ≤ N ≤ 50)이 주어진다.
2
출력 예시를 보고 재귀 횟수에 따른 챗봇의 응답을 출력한다.
어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
____"재귀함수가 뭔가요?"
____"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
____마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
____그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
________"재귀함수가 뭔가요?"
________"재귀함수는 자기 자신을 호출하는 함수라네"
________라고 답변하였지.
____라고 답변하였지.
라고 답변하였지.
제출한 답
let input = Number(require("fs").readFileSync("dev/stdin").toString());
let line = "____";
let count = 0;
console.log(`어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.`);
function recursion(count) {
if (input == count) {
console.log(
`${line.repeat(count)}"재귀함수가 뭔가요?"
${line.repeat(count)}"재귀함수는 자기 자신을 호출하는 함수라네"`
);
for (i = count; i > 0; i--) {
console.log(`${line.repeat(i)}라고 답변하였지.`);
if (i == 1) return console.log("라고 답변하였지.");
}
}
console.log(
`${line.repeat(count)}"재귀함수가 뭔가요?"
${line.repeat(count)}"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
${line.repeat(count)}마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
${line.repeat(count)}그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."`
);
recursion(count + 1);
}
recursion(count);
코드설명
let line = "____";
let count = 0;
재귀함수를 이용하여 문장을 반복시키는데, 반복이 될 때마다 "____"를 더하여 출력하도록 합니다.
반복의 횟수를 count 합니다.
재귀함수를 이용하여 문장을 반복시키는데, 반복이 될 때마다 "____"를 더하여 출력하도록 합니다.
반복의 횟수를 count 합니다.
console.log(`어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.`);
우선 재귀를 필요로 하지 않는 문장으로 시작합니다.
console.log(
`${line.repeat(count)}"재귀함수가 뭔가요?"
${line.repeat(count)}"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
${line.repeat(count)}마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
${line.repeat(count)}그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."`
);
recursion(count + 1);
문장을 출력하고 재귀함수를 실행하는데, 반복을 할 때마다 "____"문자열을 반복 수만큼 더하여 출력하도록 합니다.
if (input == count) {
반복을 멈출 조건은 input 만큼 시행하게 되었을 때로 정했습니다.
console.log(
`${line.repeat(count)}"재귀함수가 뭔가요?"
${line.repeat(count)}"재귀함수는 자기 자신을 호출하는 함수라네"`
);
반복이 종료될 때 나타나는 문장을 출력합니다.
반복이 종료될 때 나타나는 문장을 출력합니다.
for (i = count; i > 0; i--) {
console.log(`${line.repeat(i)}라고 답변하였지.`);
if (i == 1) return console.log("라고 답변하였지.");
}
for 문을 이용해 "____라고 답변하였지." 라는 문장을 순서대로 출력하고
for 문을 이용해 "____라고 답변하였지." 라는 문장을 순서대로 출력하고
가장 마지막의 문장을 return하여 재귀함수를 종료하도록 합니다.
- for문을 이용하지 않아도 출력하는 방법이 있을 것 같긴 하지만 아무리 궁리해보아도 모르겠습니다.
- return을 이렇게 이용해도 되는지 모르겠습니다.
'백준 자바스크립트' 카테고리의 다른 글
[node.js] 25304 영수증 (자바스크립트) (0) | 2022.08.21 |
---|---|
[node.js] 3003 킹퀸룩비숍나이트폰 (자바스크립트) (0) | 2022.08.21 |
[node.js] 10870 피보나치 수 (자바스크립트) 재귀와 반복문 차이 (0) | 2022.06.25 |
[node.js] 10872 팩토리얼 (자바스크립트) 재귀 단계 (0) | 2022.06.24 |
[node.js] 4948 베르트랑 공준 (자바스크립트) 기본수학단계2 (0) | 2022.06.15 |