任何人都有任何想法如何編寫一個函數來平衡括號使用遞歸? ()()()(「or this」)(「。括號平衡的遞歸方法[python]
」)(012)我的教練有這樣的解決階乘和斐波那契序列的計算數字遞歸的例子,但她從來沒有真正去了解決其他類型的問題。
任何人都有任何想法如何編寫一個函數來平衡括號使用遞歸? ()()()(「or this」)(「。括號平衡的遞歸方法[python]
」)(012)我的教練有這樣的解決階乘和斐波那契序列的計算數字遞歸的例子,但她從來沒有真正去了解決其他類型的問題。
def balanced(s, i=0, cnt=0):
if i == len(s): return cnt == 0
if cnt < 0: return False
if s[i] == "(": return balanced(s, i + 1, cnt + 1)
elif s[i] == ")": return balanced(s, i + 1, cnt - 1)
return balanced(s, i + 1, cnt)
for s in ["()", "(()", "(())", "()()", ")("]:
print "{}: {}".format(s, balanced(s))
(): True
((): False
(()): True
()(): True
)(: False
的方式遞歸的方法來找到關閉括號會的工作是一樣的東西這
def findClose(chars):
while len(chars) != 0:
if chars[0] == ")":
return True
elif chars[0] == "(":
findClose(chars[1:])
return False #base case
你隨後將只需調用findClose(chars)
,如果你看到一個開放的括號這是不完整的,這是一個方法,你可以用它來找到遞歸閉的括號
'def checkpar(x): while len(x.split('()'))> 1:x =''。join(x.split('() ')) 如果不是x:return True return False' –
你想完成什麼? –
我只是不明白如何解決這個問題。對於遞歸函數,必須有退出程序的條件。我不知道這是什麼情況。 – jonyc
我只是沒有完全明白你的問題?我看到你的輸入,什麼是期望的輸出? –