# Récursivité ex1

def factoriel(n : int) -> int :
    if n == 0:
        return 1
    else:
        return n * factoriel(n-1)

print(factoriel(10)) # 3628800

#v1
def produit(a : int, b : int) -> int :
    if a == 0:
        return 0
    else:
        return b + produit(a-1, b)

#v2
"""
def produit(a : int, b : int) -> int :
    if b == 0:
        return 0
    else:
        return a + produit(a, b-1)
"""

print(produit(6, 7)) # 42

def puissance(a : int, b : int) -> int :
    if b == 0:
        return 1
    else:
        return a * puissance(a, b-1)
        
print(puissance(2, 8)) # 256

def somme(a : int, b : int) -> int:
    if a == b:
        return a
    else:
        return a + somme(a+1, b)

print(somme(3, 8)) # 33