1. 程式人生 > >【劍指Offer】10數值的整數次方

【劍指Offer】10數值的整數次方

題目描述

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

時間限制:1秒;空間限制:32768K

解題思路

思路一

本題的難點在於考慮問題要全面,要考慮到0^{0}以及exponent為負數的情況。

Python程式碼:

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        result = 1
        if base==0 and exponent==0:
            return 1
        if exponent == 0:
            return 1
        elif exponent > 0:
            for i in range(exponent):
                result = result * base
        else:
            for i in range(-exponent):
                result = result * 1/base
        return result

思路二

使用快速冪演算法。

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        if base == 0:
            return 0
        if exponent == 0:
            return 1
        e = abs(exponent)
        tmp = base
        res = 1
        while(e > 0):
            #如果最後一位為1,那麼給res乘上這一位的結果
            if (e & 1 == 1):     #n&1 等價於 (n%2)==1
                res =res * tmp
            e = e >> 1           #n>>=1 等價於 n/=2
            tmp = tmp * tmp
        return res if exponent > 0 else 1/res