Ash*_*yan 2 javascript fibonacci
有没有一种有效的方法来检查数字是否属于斐波那契数列?
我见过很多例子,它在一个数组中创建序列并每次检查新生成的序列数是否等于输入数。还有其他方法吗?
http://www.geeksforgeeks.org/check-number-fibonacci-number/
此链接详细说明了斐波那契数的特殊性质,这意味着当且仅当 (5*n2 + 4) 或 (5*n2 – 4) 中的一个或两个是完全平方数时,该数字才是斐波那契数。
所以,
function (num) {
if (isSquare(5*(num*num)-4) || isSquare(5*(num*num)+4)) {
return true;
} else { return false; }
}
Run Code Online (Sandbox Code Playgroud)
那么 isSquare 将只是一个简单的检查函数。
编辑:值得注意的是,虽然这是一种更有效、更简单的方法来找到斐波那契数列,但它确实有一个上限。在大约第 70 个斐波那契数及以上时,您可能会看到问题,因为数字太大。