zltzlt 发表于 2020-3-29 13:43:19

Python 使用分治法求幂

本帖最后由 zltzlt 于 2020-3-29 17:12 编辑

Python 使用分治法求幂

分治法求 xy:若 y 为偶数,xy = (x2)y // 2;若 y 为奇数,xy = x * (x2)y // 2。

代码:

def power(x, y):
    res = 1             # 因为后续是做乘法,所以初始化 res 为 1
    while y:            # 当 y 为 0 时停止循环
      if y % 2:       # 如果 y 是奇数
            res *= x    # res 的值为 res * x
      y //= 2         # y = y // 2,将 y 分成两段
      x *= x          # 分了就得合,这里将 x 合并,即 x = x * x
    return res          # 返回结果 res

永恒的蓝色梦想 发表于 2020-3-29 14:22:55

不应该是 xy=(x2)y//2 和 xy=x*(x2)y//2 吗

小马爱python 发表于 2020-3-29 15:04:04

p是。。。。。{:10_245:}
页: [1]
查看完整版本: Python 使用分治法求幂