리얼니트
30
2021-06-03 15:47:01
3
138

자바스크립트 재귀함수에 관해 질문이 있습니다


재귀함수로 최소값과 최대값을 받으면 최소값에서 최대값까지의 정수를 배열로 반환받는 코드를 짜려고 합니다.


function rangeOfNumbers(startNum, endNum) {

 if(endNum<startNum) {

  return [];

 } else {

   const countArray=rangeOfNumbers(endNum);

   countArray.push(endNum);

   return countArray;

 }

}

console.log(rangeOfNumbers(1,5));


이렇게 하면 

maximum call stack size exceeded라는 오류가 걸려서 안되는데


function rangeOfNumbers(startNum, endNum) {

  if (endNum - startNum === 0) {

    return [startNum];

  } else {

    var numbers = rangeOfNumbers(startNum, endNum - 1);

    numbers.push(endNum);

    return numbers;

  }

}


console.log(rangeOfNumbers(1,5));


이렇게하면 또 되네요? 첫번째꺼는 왜 안되는 건지 알려주시면 감사하겠습니다 ㅠㅠ

0
  • 답변 3

  • 벨제부브
    2k
    2021-06-03 16:37:01

    endNum<startNum 이구문에서 마이너스로 가버리는게아닐까요

    엔드넘버랑 스타트넘어를 콘솔로 찍어서봐보세요

  • siva6
    5k
    2021-06-03 16:40:33

    재귀에서 중요한 것 중에 하나가
    도달할 수 있는 종료 조건인데요.

    1번째 함수의 종료조건은 어떤건가요?

  • 리얼니트
    30
    2021-06-03 17:13:10

    해결했습니다 ㅜㅜ 감사합니다

  • 로그인을 하시면 답변을 등록할 수 있습니다.