Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาลำดับที่ n ของลำดับเพิ่มขึ้นแบบกำหนดเองใน JavaScript


ปัญหา

พิจารณาลำดับเพิ่มขึ้น (increasing sequence) ที่นิยามดังนี้:

  • ตัวเลข seq(0) = 1 เป็นตัวแรกใน seq
  • สำหรับ x ทุกตัวใน seq แล้ว 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