import math def npow(A, n, verbose=False): if n == 0: return 1 if n == 1: return A e = math.floor(n / 2) m = npow(A, e) if (verbose): print("A:" + str(A)) print("n:" + str(n)) print("e:" + str(e)) print("m:" + str(m)) print("================") return m * m if n % 2 == 0 else m * m * A
npow(3,5,true)
npow(2,4,true)
npow(5,3,true)