ตรวจสอบว่าตัวเลขอยู่ในลำดับฟีโบนัชชีหรือไม่ โดยสร้างลำดับจนกว่าจะถึงหรือเกินตัวเลขเป้าหมาย
ตัวอย่างโค้ด
const isFib = query => {
if (query === 0 || query === 1) return true;
let prev = 1, curr = 2;
while (curr <= query) {
if (curr === query) return true;
[prev, curr] = [curr, prev + curr];
}
return false;
};
console.log(isFib(89));
ผลลัพธ์
true
วิธีทางคณิตศาสตร์ (O(1) - เร็วที่สุด)
เลข n เป็น Fibonacci ก็ต่อเมื่อ 5n² + 4 หรือ 5n² - 4 เป็น Perfect Square
const isPerfectSquare = x => {
const s = Math.sqrt(x);
return s === Math.floor(s);
};
const isFib = n =>
isPerfectSquare(5 * n * n + 4) || isPerfectSquare(5 * n * n - 4);
ไม่ต้องลูป ใช้สูตรทางคณิตศาสตร์ตรวจสอบได้ทันที