可以根据这里描述的方法创建一个快速的“给出第n个斐波那契数”的函数。是否有一种方法编写O(1)性能的isFibonacci(int i)函数? 我可以预先计算值。但是,计算需要O(n)时间,我无法为大数进行计算。
当且仅当(5*n2 + 4)或(5*n2 - 4)是完全平方数时,该数字为斐波那契数。bool isFibonacci(int n) { // n is Fibinacci if one of 5*n*n + 4 or 5*n*n - 4 or both // is a perferct square return isPerfectSquare(5*n*n + 4) || isPerfectSquare(5*n*n - 4); }
return round(sqrt(n))^2 == n;
@哈罗德返回 round(sqrt(n))^2 == n;
- DIBitsreturn isInteger(sqrt(n))
- DIBitssqrt(n)
。 - nice_dev