
def produit1(a, n):
    """  Produit naif (suppose n >= 0)
 
     :param a: un réel
     :param n: un entier
     :return: Produit a*n
    """
    return (0.0 if n == 0 else produit1(a, n - 1) + a)


def produit2(a, n):
    """  Produit basé sur la parité (suppose n >= 0)
 
     :param a: un réel
     :param n: un entier
     :return: Produit a*n
    """
    if n == 0:
        return 0.0
    else:
        p = produit2(a, n // 2)
        return p + p + (0 if n % 2 == 0 else a)


def produit3(a, n):
    """  Produit basé sur la parité (suppose n >= 0)
 
     :param a: un réel
     :param n: un entier
     :return: Produit a*n
    """
    if n == 0:
        return 0.0
    else:
        p = produit3(a + a, n // 2)
        return p + (0 if n % 2 == 0 else a)


def PGProduit():
    x = float(input("Un reel x? "))
    n = int(input("Un entier n? "))
    print("==> produit1(x,n) vaut ", produit1(x, n), sep="")
    print("==> produit2(x,n) vaut ", produit2(x, n), sep="")
    print("==> produit3(x,n) vaut ", produit3(x, n), sep="")

PGProduit()