Я написал код для простой проблемы в 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;
}
};
Вы запрашиваете '-n' как целое число, когда это число (' - (- 2147483648) ') не может быть представлено в этом типе данных. Результатом является неопределенное поведение. Проверьте размер 'n' в начале функции. – Floris