Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 재귀 함수로 피보나치 수열 구현하기

숫자 n을 입력받아 피보나치 수열의 첫 n개 항을 배열로 반환하는 재귀 함수 fibonacci()를 작성해 보겠습니다. 아래 코드는 매개변수 기본값과 재귀 호출을 활용해 간결하게 구현한 예시입니다.

코드 예제

const fibonacci = (n, res = [], count = 1, last = 0) => {
    if(n){
        return fibonacci(n-1, res.concat(count), count+last, count);
    };
    return res;
};
console.log(fibonacci(8));
console.log(fibonacci(0));
console.log(fibonacci(1));
console.log(fibonacci(19));

동작 원리

이 함수는 네 개의 매개변수를 사용합니다.

  • n: 아직 계산해야 할 항의 개수
  • res: 지금까지 계산된 피보나치 수열이 저장되는 결과 배열
  • count: 현재 항의 값
  • last: 바로 앞 항의 값

함수가 호출되면 n이 0이 될 때까지 자기 자신을 재귀적으로 호출하면서 현재 항의 값을 결과 배열에 추가하고, 다음 항의 값(count + last)과 현재 항의 값(count)을 함께 전달합니다. n이 0이 되면 더 이상 재귀 호출을 하지 않고 지금까지 쌓인 배열을 그대로 반환합니다. 덕분에 반복문 없이도 깔끔하게 피보나치 수열을 생성할 수 있습니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

[
    1, 1, 2, 3,
    5, 8, 13, 21
]
[]
[ 1 ]
[
    1, 1, 2, 3, 5,
    8, 13, 21, 34, 55,
    89, 144, 233, 377, 610,
    987, 1597, 2584, 4181
]

fibonacci(0)처럼 0을 전달하면 빈 배열이 반환되고, fibonacci(1)은 첫 번째 항만 담긴 배열을 반환하는 것을 확인할 수 있습니다.