1.什麼是函數遞歸 函數的嵌套調用:一個函數裡面又寫了一個函數。 函數的遞歸調用:他是一種特殊的嵌套調用,他也是在函數裡面調用函數,但是他在函數體內調用的函數時他自己本身。 如果遞歸函數不斷的在函數體內調用函數自己本身,如果我們不給終止條件來結束程式運行的話,程式就會進入死迴圈,那這個時候程式運行將 ...
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)