劍指offer 數值的整數次方

2021-08-27 20:47:59 字數 1099 閱讀 3335

一般解法:(相對低效)

/** * 題目:

* 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

*/public class p110_integerpowerofnumber

//輸入指數為0

if (exponent == 0)

result = 1;

int temp = math.abs(exponent);

for (int i = 1; i <= temp; i++)

if (exponent > 0)

if (exponent < 0)

return result;

}public static void main(string args)

}

高效解法:

/**

* 題目:

* 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

* 解題思路:

* 當指數為偶數時:a^n=a^(n/2)*a^(n/2)

* 當指數為奇數時:a^n=a^(n/2)*a^(n/2)*a

*/public class p110_integerpowerofnumber_

//指數為1,返回底數本身

if (exponent == 1)

int ab***ponent = math.abs(exponent);

//假設指數為偶數次方 a^n=a^(n/2)*a^(n/2)

double result = power(base, ab***ponent >> 1);

result *= result;

//如果指數為奇數,將上面結果再乘以底數本身

if (ab***ponent % 2 == 1)

if (exponent < 0)

return result;

}public static void main(string args)

}

劍指offer 數值的整數次方

1 題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。2 思路 需要考慮到的情況 1 指數為負數的時候,可以先對指數求絕對值,算出次方之後的結果再取倒數。2 當底數是0,指數是負數的時候,可以將無效變數設定為true,並返回0。3...

劍指offer 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。將指數大於0,小於0,等於0 底數不為0 的情況分開。其實指數為0的情況不必單獨拎出來 不進入if直接返回result為1.0 真正需要考慮的是,底數為0而指數為負的情況,數學上沒有意義。書...

劍指offer 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。1.最直觀的方法,遞迴求解a b a a b 1 當然也可以用迴圈實現。要注意特殊情況,指數為0時乘方結果都是1 指數為負數時的計算,可以先轉化為正數再求倒數,但是底數為0時不能求導。2.效...