Binary Exponential

def binpowRecursive(a, b):
    if b == 0: return 1

    res = binpow(a, b // 2)
    
    if b & 1: return res * res * a

    return res * res

# Test
print(binpowRecursive(10, 3), binpow(10, 3) == 10 ** 3)
print(binpowRecursive(8, 3), binpow(8, 3) == 8 ** 3)
def binpowIterative(a, b):
    res = 1
    while b > 0:
        if b & 1: res = res * a
        a = a * a
        b >>= 1
    return res

# Test
print(binpowIterative(10, 3), binpow(10, 3) == 10 ** 3)
print(binpowIterative(8, 3), binpow(8, 3) == 8 ** 3)

Last updated