一、遞歸的定義:函數自身調用自身
示例:(死循環,僅示範使用)
def test(n):
print(n)
test(n)
test(10)
正常遞歸:
def test(n):
print(n)
if int(n / 2) == 0:
return n
res = test(int(n / 2))
return res
test(10)
遞歸問路:
def ask_way(persionlist):
print("-" * 60)
if len(persionlist) == 0:
return "沒人知道"
persion = persionlist.pop(0)
if persion == "dou5":
print("謝天謝地你終於問對人了")
return "%s 說:你順着路往前走,走到頭再往右" % persion
print("hi 帥哥%s,where is the way?" % persion)
print("%s回答道:我不知道,你等着,俺給你問問%s......" % (persion, persionlist))
time.sleep(3)
res = ask_way(persionlist)
return res
ask_way(persion_list)
二、遞歸的特性
1、必須有一個明確的結束條件
2、每次進入更深一層遞歸時,問題規模相比上一次遞歸都應有所減少
3、遞歸的效率不高,遞歸層次過多會導致棧溢出