我在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