1.什么是函式遞回
函式的嵌套呼叫:一個函式里面又寫了一個函式,
函式的遞回呼叫:他是一種特殊的嵌套呼叫,他也是在函式里面呼叫函式,但是他在函式體內呼叫的函式時他自己本身,
如果遞回函式不斷的在函式體內呼叫函式自己本身,如果我們不給終止條件來結束程式運行的話,程式就會進入死回圈,那這個時候程式運行將會報錯,因此我們應該給遞回函式一個明確的結束條件,
def foo():
print('from foo')
foo()
foo() # 此時程式會進入死回圈
2.直接呼叫
直接呼叫指的是:直接在函式內部呼叫函式自身,
1.利用傳參的方式來計算n個人后的第n個人的年齡
2.用到變數作用域的知識點(global、可變資料型別、)
ls = [16]
def func(n):
if n == 0:
return ls[0]
res = func(n-1)+2
return res
print(func(5))
3.間接呼叫
間接呼叫指的是:不在原函式體內呼叫函式自身,而是通過其他的方法間接呼叫函式自身,
def name():
print('hello,xichen')
age(20)
def age(n):
print('my name is ',n)
name()
print(name())
print(age(20))
4.遞回需要注意
-
遞:一層一層的遞回呼叫,每一次進行下一次的遞回的時候問題的規模都必須是在減小的
-
歸:必須要又一個明確的結束條件,在滿足該條件開始一層一層回溯,
在不斷的重復程序之后,可以得到一個最終的結果
列題
給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效,
有效字串需滿足:左括號必須用相同型別的右括號閉合,
左括號必須以正確的順序閉合,注意空字串可被認為是有效字串,
示例 1: 示例 2: 示例 3: 示例 4: 示例 5:
輸入: "()" 輸入: "()[]{} 輸入: "(]" 輸入: "([)]" 輸入: "{[]}"
輸出: true "輸出: true 輸出: false 輸出: false 輸出: True'''
# Python學習交流QQ群:153708845
def isValid(s: str) -> bool:
print(s)
# s = ''
if not s: # 判斷s是否為空
return True
if s.find('[]') != -1 or s.find('{}') != -1 or s.find('()') != -1: # 證明s里面有 ()/[]/{}
if '{}' in s:
s = s.replace('{}', '')
if '[]' in s:
s = s.replace('[]', '')
if '()' in s:
s = s.replace('()', '')
if s == '': # s = '[]'
return True
res = isValid(s)
print('res:',res)
if not res:
return False
else:
return False
return True
res = isValid(s)
print(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541331.html
標籤:Python
上一篇:Python中的main方法教程
下一篇:C++ 檔案讀入速度測驗
