"""Recursive functions for computing x^n""" # first a non-recursive function: def pow_iterative(x, n) : product = 1 for i in range(n) : product = product * x return product # a recursive function for computing x^n: def pow(x, n) : """Returns x^n""" if n == 0 : # base case; any number to 0th power is 1 return 1 else : # recursive case: x^n = x * x^(n-1) return x * pow(x, n-1) def pow_no_base(x, n) : return x * pow_no_base(x, n-1) def pow2(x, n) : if n == 0 : # base case; any number to 0th power is 1 return 1 elif n % 2 == 0 : # recursive case 1: x^y = (x^2)^(n/2) return pow(x * x, n / 2) else : # recursive case 2: x^n = x * x^(n-1) return x * pow(x, n - 1)