面试题16:数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

知识点

Qiang的思路V1

求a的b次方,首先想到的是循环相乘,然后考虑正负取倒数,最后返回结果。

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

Qiang的思路V2

在实现了上面的思路之后,也就想到了如果采取折半的形式可能效率相对提升一些。所以就有了下面的代码。

# -*- coding:utf-8 -*-
class Solution:
    def getResult(self, a, b):
        if b==1:
            return a
        r=self.getResult(a, int(b/2))
        return r*r if b%2==0 else r*r*a
    
    def Power(self, base, exponent):
        # write code here
        if exponent==0:
            return 1
        flag=True
        if exponent<0:
            flag=False
            exponent=-exponent
        result=self.getResult(base, exponent)
        return result if flag==True else 1/result

作者原创,如需转载及其他问题请邮箱联系:[email protected]
个人网站:https://www.myqiang.top。

你可能感兴趣的:(面试题16:数值的整数次方)