Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript를 사용하여 증가하는 시퀀스의 n번째 요소 찾기

<시간/>

문제

다음과 같이 정의되는 증가 시퀀스를 고려하십시오 -

  • seq(0) =1이라는 숫자는 seq의 첫 번째 숫자입니다.
  • seq의 각 x에 대해 y =2 * x + 1 및 z =3 * x + 1도 seq에 있어야 합니다.
  • seq에 다른 숫자가 없습니다.

따라서 이 수열의 처음 몇 항은 -

[1, 3, 4, 7, 9, 10, 13, 15, 19, 21, 22, 27, ...]

숫자 n을 받아서 이 시퀀스의 n번째 항을 반환하는 함수를 작성해야 합니다.

예시

다음은 코드입니다 -

const num = 10;
const findNth = n => {
   let seq = [1], x = 0, y = 0
   for (let i = 0; i < n; i++) {
      let nextX = 2 * seq[x] + 1, nextY = 3 * seq[y] + 1
      if (nextX <= nextY) {
         seq.push(nextX)
         x++
         if (nextX == nextY)
            y++
         } else {
            seq.push(nextY)
            y++
      }
   }
   return seq[n];
}
console.log(findNth(num));

출력

22