Skip to content
On this page

Recursion

해결하려는 임의의 문제를 동일한 타입의 부분문제로 쪼개고 그 결과물들을 합쳐서 해결하는 방법입니다.

부분문제의 크기가 많이 작아지고 종료할 수 없는 상황이 오지 않으려면 반드시 탈출조건(stopping point, base case)이 있어야 합니다.

TIP

기본적으로 재귀로 풀리는 방법은 처음부터 차례대로 구하는 방식인 순회로도 구현할 수 있습니다.

언제나 문제를 풀 때는 순회로 풀지, 아니면 재귀로 풀지에 관해서 고민해야 합니다.

js
// recursion
const fibo = (n) => {
  if (n <= 0) return 0;
  else if (n === 1) return 1;

  return fibo(n - 2) + fibo(n - 1);
};
js
// iteration
const fibo = (n) => {
  const two = [0, 1];

  if (n === 0) {
    return return two[0];
  }
  for (let i = 0; i < n - 1; i++) {
    [two[0], two[1]] = [two[1], two[0] + two[1]];
  }
  return two[1];
};

export default fibo;