美文网首页剑指Offer-Python-牛客网
面试题16:数值的整数次方

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

作者: 凌霄文强 | 来源:发表于2019-01-11 14:44 被阅读0次

    题目描述

    给定一个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
    

    作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com
    个人网站:https://www.myqiang.top

    相关文章

      网友评论

        本文标题:面试题16:数值的整数次方

        本文链接:https://www.haomeiwen.com/subject/wzkxdqtx.html