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

更新於: 17-Apr-2021

檢視 171 次

開啟你的 職業 生涯

完成課程獲得認證

開始
廣告