有没有一种有效的方法来检查数字是否属于斐波那契数列?
我已经看到了很多带有循环的示例,该循环在数组中创建序列并每次检查新生成的序列号是否等于输入数。还有另一种方法吗?
最佳答案
http://www.geeksforgeeks.org/check-number-fibonacci-number/
此链接详细说明斐波纳契数具有特殊的品质,这意味着当且仅当(5 * n2 + 4)或(5 * n2-4 – 4)中的一个或两个为完美正方形时,数字才是斐波那契数。
所以,
function (num) {
if (isSquare(5*(num*num)-4) || isSquare(5*(num*num)+4)) {
return true;
} else { return false; }
}
然后,isSquare只是一个简单的检查功能。
编辑:值得注意的是,虽然这是一种查找斐波纳契数的更有效,更简便的方法,但确实有上限。在第70斐波那契数附近,由于数字太大,您可能会看到问题。
关于javascript - JS:检查数字是否属于斐波那契数列(无循环),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40639509/