美文网首页
数值的整数次方——jzoffer

数值的整数次方——jzoffer

作者: 二十岁的弹簧 | 来源:发表于2018-12-16 09:47 被阅读0次

第三章 高质量的代码,面试题16,page110

关于面试题目,如果要求是任意大的数字,那么这道题目就是一个大数问题,此时我们需要特殊的数据结构来表示数字,比如用字符串或者数组来表示大的数字,以确保不会溢出。

首先要考虑的是普通功能测试的测试用例

其次需要考虑各种边界值的测试用例。例如递归终止边界

最后还需要考虑各种可能的错误输入,负面测试用例

题目:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题

我们使用右移运算符代替了除以2,用位与运算符代替了求余运算符(%)来判断一个数是奇数还是偶数。位运算的效率比乘除法及求余运算的效率要高很多。

g_invalid_input = False
class Solution:

    def power_with_unsigned_exponent(self, base, exponent):
        '''指数为非负的次方操作'''
        result = 1.0 # 如果指数为0,那么无论底数为任何数,结果为1,底数为0时也同样
        for _ in range(exponent):
            result *= base
        return result
    
    def fast_power_with_unsigned_exponent(self, base, exponent):
        '''指数为非负的次方操作,使用递归,速度更快'''
        if exponent == 0:
            return 1.0
        if exponent == 1:
            return base
        ret = self.fast_power_with_unsigned_exponent(base, exponent >> 1)
        ret *= ret
        if exponent & 0x1:
            ret = ret * base
        return ret
    
    def power(self, base, exponent):
        global Solution.g_invalid_input
        # 每次调用前要将全局变量错误标识初始化
        g_invalid_input = False
        if base = 0 and exponent < 0:
            g_invalid_input = True
            return 0.0
        unsigned_exponent = exponent if exponent >= 0 else -exponent
        ret = self.power_with_unsigned_exponent(base, unsigned_exponent)
        if exponent < 0:
            ret = 1.0 / ret
        return ret    

相关文章

  • 数值的整数次方——jzoffer

    第三章 高质量的代码,面试题16,page110 关于面试题目,如果要求是任意大的数字,那么这道题目就是一个大数问...

  • 《剑指 Offer (第 2 版)》第 16 题:数值的整数次方

    第 16 题:数值的整数次方(快速幂) 传送门:AcWing:数值的整数次方,牛客网 online judge 地...

  • 剑指offer(十二)数值的整数次方

    数值的整数次方 是为了考察代码完整性点击进入 牛客网题库:数值的整数次方 题目描述:给定一个double类型的浮点...

  • 数值的整数次方

    题目描述: 解析一: 初看,就是求一个 double类型的数值的n次方,用代码来写就是n次数值相乘。但是,这道题的...

  • 数值的整数次方

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

  • 数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent...

  • 数值的整数次方

    https://www.nowcoder.com/practice/1a834e5e3e1a4b7ba251417...

  • 数值的整数次方

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

  • 数值的整数次方

    《剑指offer》面试题16:数值的整数次方 题目:实现函数double Power(double base,in...

  • 数值的整数次方

    ?环境:牛客的编译环境?语言:JavaScript☕️难点:没有考虑到底数为0,指数为负数和正数的不同情况。?题目...

网友评论

      本文标题:数值的整数次方——jzoffer

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