我正在解决一个问题,必须确定给定的数字是否是斐波那契数。
它涉及到一个步骤,我们必须检查5 * n * n-4或5 * n * n + 4(n是给定的数字)是否是一个完美的正方形。如果这些术语中的任何一个或两者都是完美的平方,则为斐波那契数,否则为非。
我使用以下语句检查一个完美的正方形。
bool isPerfectSquare(long long num){
long long x = sqrt(num);
return (x*x==num);
}
但是此方法显示了4个测试用例的错误答案。
而当我使用此(以下)方法时,它通过了所有测试用例。
bool isPerfectSquare(long long num){
long long x = sqrt(num);
if(x%1==0)
return true;
else
return false;
}
上述两种方法在找到一个完美的平方之间有什么区别?
它还会影响程序的时间复杂度吗?
long long将自动将您的数字四舍五入,这就是为什么它在某些测试中失败,并尝试将sqrt存储为double或long double的原因