美文网首页剑指offer- python实现
面试题16:数值的整数次方

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

作者: 不会编程的程序猿甲 | 来源:发表于2020-02-13 22:46 被阅读0次

    题目:
    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0

    解题思路1:
    分情况讨论,分别为指数大于0和指数小于0的情况进行;当小于0时为先将负数取绝对值,然后再算出结果之后将结果取倒数即可。注意使用这种方法时需要全面考虑,避免只考虑指数为正数的情况。

    思路1代码实现:

    # -*- coding:utf-8 -*-
    class Solution:
        def __init__(self):
            self.g_InvalidInput=False
        def Power(self, base, exponent):
            # write code here
            if base == 0 and exponent < 0:
                self.g_InvalidInput=True
                return 0
            # solution 1
            if exponent >= 0:
                result = self.PowerCore(base,exponent)
            if exponent < 0:
                result = 1.0/self.PowerCore(base,-exponent)
            return result
        def PowerCore(self,base,exponent):
            if exponent ==0:
                return 1
            if exponent ==1:
                return base
            result = 1
            for i in range(0,exponent):
                result *=base
            return result
    

    思路1运行结果:

    方法1提交结果.png

    解题思路2:(高效的解法)
    为了提高效率,可以使用如下快捷有效的公式进行计算:

    计算公式.png

    思路2代码实现:

    # -*- coding:utf-8 -*-
    class Solution:
       def Power(self, base, exponent):
           # write code here
           #solution 2
           if base == 0 and exponent < 0:
               self.g_InvalidInput=True
               return 0
           if exponent >= 0:
               result = self.ExpCore(base,exponent)
           if exponent < 0:
               result = 1.0/self.ExpCore(base,-exponent)
           return result
    
       def ExpCore(self,base,exponent):
           if exponent ==0:
               return 1
           if exponent ==1:
               return base
    
           result = self.ExpCore(base,exponent>>1)
           result *= result
           if exponent&0x1==1:
               result *=base
           return result
    

    思路2运行结果:

    思路 2运行结果.png

    相关文章

      网友评论

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

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