递归函数
Posted pankypan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归函数相关的知识,希望对你有一定的参考价值。
递归函数
初识递归
递归的定义——在一个函数里再调用这个函数本身
现在我们已经大概知道刚刚讲的story函数做了什么,就是在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归。
Python递归的最大深度
正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去。但是我们之前已经说过关于函数调用的问题,每一次函数调用都会产生一个属于它自己的名称空间,如果一直调用下去,就会造成名称空间占用太多内存的问题,于是python为了杜绝此类现象,强制的将递归层数控制在了1000
def recursion_deep(n=1):
print(n)
n += 1
recursion_deep(n)
if __name__ == '__main__':
recursion_deep()
设置默认递归层数:
import sys
sys.setrecursionlimit(2000)
def recursion_deep(n=1):
print(n)
n += 1
recursion_deep(n)
recursion_deep()
递归应用
三级菜单
menu =
'北京':
'海淀':
'五道口':
'soho': ,
'网易': ,
'google':
,
'中关村':
'爱奇艺': ,
'汽车之家': ,
'youku': ,
,
'上地':
'百度': ,
,
,
'昌平':
'沙河':
'老男孩': ,
'北航': ,
,
'天通苑': ,
'回龙观': ,
,
'朝阳': ,
'东城': ,
,
'上海':
'闵行':
"人民广场":
'炸鸡店':
,
'闸北':
'火车战':
'携程':
,
'浦东': ,
,
'山东': ,
def three_menu(dic):
while True:
for k in dic:
print(k)
key = input("input>>>").strip()
if key == 'q' or key == 'b':
return 'q'
elif key in dic.keys() and dic[key]:
ret = three_menu(dic[key])
if ret == 'q':
return 'q'
three_menu(menu)
二分查找
def search(num, lst, start=None, end=None):
start = 0 if start is None else start
end = len(lst) - 1 if end is None else end
mid = (end - start) // 2 + start
if start >= end:
return None
elif lst[mid] > num:
return search(num, lst, start, mid - 1)
elif lst[mid] < num:
return search(num, lst, mid + 1, end)
elif lst[mid] == num:
return mid
lst = [1, 2, 5, 8, 13, 23, 26, 33, 35, 40]
print(search(22, lst)) # None
print(search(23, lst)) # 5
以上是关于递归函数的主要内容,如果未能解决你的问题,请参考以下文章