[python] Transformer l'itération en récursivité



Answers

>>> def check(mystr, barometer=0):
...     if not mystr:
...         return barometer
...     elif mystr[0] == "(":
...         return check(mystr[1:], barometer+1)
...     elif mystr[0] == ")":
...         return check(mystr[1:], barometer-1)
...     else:
...         return check(mystr[1:], barometer)
... 
>>> for s in ["()", "(()", "(())", "()()"]: print(s, check(s))
... 
() 0
(() 1
(()) 0
()() 0

0 signifie que vous êtes correctement équilibré. Tout le reste signifie que vous n'êtes pas équilibré

Question

Je veux vérifier si l'utilisateur de string entré a une quantité équilibrée de ( et )

ex. ()( n'est pas équilibré (()) est équilibré

def check(string):

        counter=0
        string=string.replace(" ","")

        if string[0] is "(":

           for x in string:
                if x is "(":
                        counter=counter+1
                elif x is ")":
                        counter=counter-1

           if counter1 is 0:
                print("Balanced")
           else:
                print("Unbalanced")
        else:
                print ("Unbalanced")

donc cela fonctionne, mais comment puis-je résoudre ce problème avec la récursivité? J'essaie de penser comment je peux faire décroître une variable chaque fois que je l'appelle de manière récursive et une fois qu'elle est 0, stop.s




Links