Vấn đề
Hãy xem xét một trình tự tăng dần được xác định như sau -
- Số seq (0) =1 là số đầu tiên trong seq.
- Với mỗi x trong seq, thì y =2 * x + 1 và z =3 * x + 1 cũng phải trong seq.
- Không có số nào khác trong seq.
Do đó, một vài số hạng đầu tiên của chuỗi này sẽ là -
[1, 3, 4, 7, 9, 10, 13, 15, 19, 21, 22, 27, ...]
Chúng tôi được yêu cầu 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 số này.
Ví dụ
Sau đây là mã -
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));
Đầu ra
22