劍指offer 12 數值的整數次方

2021-08-28 18:52:13 字數 1120 閱讀 9747

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

1、對數字的預處理,比如,0的負數次方等

2、提高計算n的m次方的效率方法一:遞迴。。。利用公式 ab=(b%2==0)?ab/2*ab/2:a(b-1)/2*a(b-1)/2*a

class solution 

double

power

(double base,

int exponent)

int ab***ponent = exponent;

if(exponent<

0) ab***ponent =

-exponent;

double result =

power

(base, ab***ponent);if

(exponent<0)

return

1.0/result;

return result;}}

;

方法二,利用分解冪的方法:

35中,5=(0101)2,也就是說:

35=30001*30100 也就是說,可以逐個求出3t(t為二進位制分解的結果,都是2k,就是說,35=31*34)如果該exp的二進位制第n位為1,那麼將這一位累乘進結果中,否則,不累乘。**如下

class solution 

// 計算base的n次方

base*

=base;

exponent>>=1;

}return result;

}double

power

(double base,

int exponent)

int ab***ponent = exponent;

if(exponent<

0) ab***ponent =

-exponent;

double result =

power

(base, ab***ponent);if

(exponent<0)

return

1.0/result;

return result;}}

;

劍指Offer (12)數值的整數次方

題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。實現如下 方法一 迴圈 此題不需要考慮計算後值溢位的情況,即不存在大數情況 異常情況 底數為0時 0.0 指數為0時 1.0 數學定義 指數為負數時,需要考慮先計算指數絕對值的結果...

劍指Offer 12 數值的整數次方

description給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。用divide conquer的思路可以每次平方,最後堆起來得到答案。最開始的時候我搞不太清exp 0,1這種情況怎麼合併,所以就單獨分了出來。c double pow...

劍指offer(12)數值的整數次方

題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。思路 首先把指數都換成正數,然後對指數進行移位運算,指數二進位制形式有多少位就進行多少次底數相乘運算,但只有該位不為0時乘到要返回的res中。1 public class solu...