我在leetcode中编写了一个简单问题的代码。它要求实施pow(x,n);它告诉我“运行时错误”,上次执行输入:1.00000,-2147483648。我改变了另一种方法,这是有效的。但我只是想知道我在做下面的代码中的错误。非常感谢!!我的电源功能实现有什么问题?
class Solution {
public:
double pow(double x, int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if(n==0 && x==0) return 1.0;
if(x==0) return 0;
if(n==0) return 1.0;
if(n<0) return 1/pow(x,-n);
if(n==1) return x;
double y=pow(x,n/2);
if(n%2==1) return y*y*x;
else return y*y;
}
};
当该数字(' - ( - 2147483648)')不能用该数据类型表示时,您正在询问'-n'作为整数。结果是未定义的行为。在函数开始时测试'n'的大小。 – Floris