알고리즘 - freeCodeCamp - Smallest Common Multiple.part2

NO PAIN, NO GAIN·2019년 12월 5일
0

algorithm

목록 보기
11/18

진행중인 문제에 이어서 푸는 중이다.
어제 생각했던 풀이로 해봤다.

function smallestCommons(arr) {
  let sortedArr = arr.sort((a, b) => a - b);

  let result = sortedArr[0]
  
  for (let i = sortedArr[0] + 1; i <= sortedArr[1]; i++) {
    result = addRecursion(result, i);
  }
  return result;
}

function addRecursion(num1, num2) {
  let resultNum = 0;
  const searchCommonNumber = (n1, n2) => {
    if (n1 === n2) {
      return n1;
    } else if (n1 < n2) {
      resultNum = n1;
      resultNum += num1;
      return searchCommonNumber(resultNum, n2);
    } else if (n1 > n2) {
      resultNum = n2;
      resultNum += num2;
      return searchCommonNumber(n1, resultNum);
    }
  }
  return searchCommonNumber(num1, num2);
}

총 통과해야하는 단계가 6개가 있는데 그 중에 4개를 통과했다. 나머지 2개는 call stack이 초과해서 문제를 통과하지 못했다. 왜 call stack이 초과하냐면 첫 조건이 재귀함수 종료 조건인데 종료조건이 될 때까지 함수가 실행되고 그 과정에서 실행되는 함수가 너무 많아서 call stack이 초과한다.
call stack이 초과되지 않는 방법을 생각해 내야겠다.

profile
갈고 닦자.

0개의 댓글