使用 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

以上是 使用 JavaScript 查找递增序列的第 n 个元素 的全部内容, 来源链接: utcz.com/z/331796.html

回到顶部