0+0=0 + 0 = la tête à Toto

tête à Toto

Comme vous le savez, 0+0=00 + 0 = 0. On pourrait aussi dire 0=(0+0)0 = (0 + 0). Dans ce cas, on peut aussi aller un peu plus loin, et puisque 00 vaut (0+0)(0 + 0), remplacer les 00 de (0+0)(0 + 0) par leur valeur, et obtenir :

0=((0+0)+(0+0))0 = ((0 + 0) + (0 + 0))

Rien n'empêche de continuer et d'écrire :

0=(((0+0)+(0+0))+((0+0)+(0+0)))0 = (((0 + 0) + (0 + 0)) + ((0 + 0) + (0 + 0)))

Votre programme doit impérativement utiliser une fonction récursive, et non une boucle.

Contraintes

Entrée

L'entier NN.

Sortie

La chaîne indiquant la valeur de 00, en ayant remplacé NN fois les zéros à droite de l'égalité 0=00 = 0 par leur valeur (0+0)(0 + 0).

Exemples

Exemple 1

entrée :

0

sortie :

0 = 0

Exemple 2

entrée :

2

sortie :

0 = ((0 + 0) + (0 + 0))

Exemple 3

entrée :

3

sortie :

0 = (((0 + 0) + (0 + 0)) + ((0 + 0) + (0 + 0)))

Solution

def toto(n: int) -> str:
    """Renvoie "0", où "0" est remplacé par "(0 + 0)", récursivement, n fois.

    >>> toto(0)
    '0'

    >>> toto(1)
    '(0 + 0)'

    >>> toto(2)
    '((0 + 0) + (0 + 0))'
    
    """
    if n == 0:
        return "0"
    else:
        toto_prec = toto(n-1)
        return "(" + toto_prec + " + " + toto_prec + ")"
    
n = int(input())
print("0 =", toto(n))

Commentaires