我有一个任务要编写一个方法来确定一个数字是否是斐波那契数列的一部分。
配合公式:
正整数 z 是斐波那契数当且仅当 5z^2 + 4 或 5z^2 - 4 之一是完美平方
我定义了以下适用于小数和大斐波那契数的方法,但是,无论出于何种原因,我的分配规范在处理大的非斐波那契数时会抛出错误,特别是在运行is_fibonacci?(927372692193078999171)
. 显然,该方法返回true
而不是false
. 其他一切似乎都是正确的,所以我有点想知道为什么这不起作用。有什么建议么?
def is_fibonacci?(i)
bigNumber1 = Math.sqrt((5*(i**2)+4))
bigNumber2 = Math.sqrt((5*(i**2)-4))
if bigNumber1 == bigNumber1.round || bigNumber2 == bigNumber2.round
return true
else
return false
end
end