
def somme(n):
    """  Somme récursive
 
     :param n: un entier
     :return: Somme des entiers de 1 à n
    """
    return (0 if n <= 0 else n + somme(n - 1))


def sommetr(n):
    """  Trace de la Somme récursive
 
     :param n: un entier
     :return: Somme des entiers de 1 à n
    """
    rs = 0
    print("--> sommetr(", n, ")", sep="")
    if n > 0:
        rs = n + sommetr(n - 1)
    print("<-- sommetr(", n, ")", sep="")
    return rs


def sommeRt(n, a):
    """  Somme récursive terminale
 
     :param n: un entier
     :param a: cumul
     :return: Somme des entiers de 1 à n
    """
    return (a if n <= 0 else sommeRt(n - 1, n + a))


def PGSomme():
    n = int(input("Somme de 1 a ? "))
    print("==> somme(n) vaut ", somme(n), sep="")
    print("==> sommetr(n) vaut ", sommetr(n), sep="")
    print("==> sommeRt(n) vaut ", sommeRt(n, 0), sep="")

PGSomme()