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

자바스크립트로 숫자가 피보나치 수인지 확인하는 방법

이번 글에서는 숫자를 입력받아 해당 숫자가 피보나치 수열에 포함되어 있는지 여부를 불리언(Boolean) 값으로 반환하는 자바스크립트 함수를 작성해 보겠습니다.

문제 정의

함수는 하나의 숫자를 매개변수로 받으며, 그 숫자가 피보나치 수열에 속하면 true, 속하지 않으면 false를 반환해야 합니다.

예를 들어 다음과 같이 함수를 호출한다면,

fibonacci(12);
fibonacci(89);
fibonacci(55);
fibonacci(534);

출력 결과는 다음과 같아야 합니다.

false
true
true
false

재귀 함수를 활용한 해결 방법

피보나치 수열은 첫 두 항이 0과 1이며, 이후의 모든 항은 바로 앞의 두 항을 더한 값으로 정의됩니다. 즉, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89... 와 같은 형태로 진행됩니다.

이 성질을 활용하면 재귀 호출을 통해 목표 숫자까지 수열을 전개해 가면서 일치 여부를 확인할 수 있습니다. 아래 코드에서 count는 현재 항, last는 바로 앞 항을 나타냅니다. count가 query보다 작은 동안에는 수열을 계속 전개하고, count가 query와 같아지면 true를, 수열이 query를 초과하게 되면 false를 반환합니다.

예제 코드

const fibonacci = (query, count = 1, last = 0) => {
    if(count < query){
        return fibonacci(query, count+last, count);
    };
    if(count === query){
        return true;
    }
    return false;
};
console.log(fibonacci(12));
console.log(fibonacci(55));
console.log(fibonacci(89));
console.log(fibonacci(534));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

false
true
true
false

이처럼 재귀 함수를 사용하면 별도의 배열이나 반복문 없이도 간결하게 피보나치 수 판별 로직을 구현할 수 있습니다. 다만 매우 큰 숫자를 검사할 때는 재귀 호출의 깊이가 깊어질 수 있으므로, 상황에 따라 반복문 기반 구현을 함께 고려하는 것이 좋습니다.