16数值的整数次方

实现函数exp(base, expo),求base的expo次方。不得使用库函数,同时不需要考虑大数问题。


def exp(base, expo):
    if expo == 0: return 1
    elif expo == 1: return base
    elif expo < 0:
        return 1 / exp(base, -expo)

    # if expo % 2 == 0:
    #     return exp(base, expo / 2) * exp(base, expo / 2)
    # elif expo % 2 == 1:
    #     return exp(base, (expo - 1) / 2) * exp(base, (expo - 1) / 2) * exp(base, 1)
    
    result = exp(base, expo >> 1)
    result *= result
    if expo & 0x1 == 1:
        result *= base
    return result

if __name__ == '__main__':
    assert exp(3, -1) == 0.3333333333333333
    assert exp(3, 10) == 59049
    assert exp(2, -3) == 0.125
    assert exp(2, 0) == 1
    assert exp(0, 0) == 1
    assert exp(0, 1) == 0
    assert exp(3, 0) == 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容