Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm phần tử thứ n của dãy tăng dần trong JavaScript

Vấn đề

Xét một dãy tăng dần được định nghĩa như sau:

  • Số seq(0) = 1 là phần tử đầu tiên trong dãy.
  • Với mỗi x trong dãy, thì y = 2 * x + 1 và z = 3 * x + 1 cũng phải nằm trong dãy.
  • Không có số nào khác trong dãy.

Do đó, các số hạng đầu tiên của dãy này sẽ là:

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

Chúng ta cần viết một hàm nhận vào một số n và trả về số hạng thứ n của dãy này.

Ví dụ

Dưới đây là mã nguồ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));

Kết quả

22