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