#!/usr/bin/python3
# -*- coding: utf-8 -*-

# Precondicion: n debe ser mayor o igual que cero. Devuelve: b^n.
def potencia(b, n):
    """ Precondicion: n debe ser mayor o igual que cero. Devuelve: b^n. """
    # Caso base
    if n <= 0:
        return 1
    # n par
    if n % 2 == 0:
        pot = potencia(b, n / 2)
        return pot * pot
    # n impar
    else:
        pot = potencia(b, (n - 1) / 2)
        return pot * pot * b


if __name__ == "__main__":
    print(potencia(2, 10))
    print(potencia(3, 3))
    print(potencia(5, 0))
