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

JavaScript로 구현하는 변형 피보나치 수열 — n번째 항 구하기

다음과 같은 규칙으로 수열을 하나 정의해 보겠습니다.

이 수열의 연속된 두 항을 각각 t1, t2라고 할 때, 세 번째 항은 아래 공식으로 계산됩니다.

t3 = t1 + (t2 * t2)

피보나치 수열과 마찬가지로, 이 수열의 첫 번째 항과 두 번째 항은 항상 각각 0과 1로 고정됩니다.

우리가 작성해야 할 것은 숫자 n을 입력받아, 위에서 정의한 수열의 n번째 항을 계산하여 반환하는 JavaScript 함수입니다.

예를 들어 n = 6이라면 결과는 다음과 같습니다.

t6 = 27

그 이유는 이 수열이 다음과 같이 전개되기 때문입니다.

0 1 1 2 5 27

동작 원리

함수는 초기값 [0, 1]을 담은 배열로 시작합니다. 배열의 길이가 n에 도달할 때까지 반복문을 돌며, 마지막 항(last)과 그 앞 항(secondLast)을 가져와 secondLast + (last * last) 공식을 적용해 새 항을 배열 끝에 추가합니다. 반복이 끝나면 배열의 n번째 요소(인덱스 n-1)를 반환하면 됩니다.

예시 코드

이를 구현한 코드는 다음과 같습니다.

const num = 6;
const findSequenceTerm = (num = 1) => {
    const arr = [0, 1];
    while(num > arr.length){
        const last = arr[arr.length - 1];
        const secondLast = arr[arr.length - 2];
        arr.push(secondLast + (last * last));
    };
    return arr[num - 1];
};
console.log(findSequenceTerm(num));

출력 결과

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

27