다음과 같은 규칙으로 수열을 하나 정의해 보겠습니다.
이 수열의 연속된 두 항을 각각 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