Turning iteration into recursion

后端 未结 2 442
-上瘾入骨i
-上瘾入骨i 2021-01-25 03:46

I want to check if the string user entered has a balanced amount of ( and )\'s

ex. ()( is not balanced (())

2条回答
  •  南方客
    南方客 (楼主)
    2021-01-25 04:25

    >>> 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 means you're properly balanced. Anything else means you're not balanced

提交回复
热议问题