公司网站上面的动画怎么做,wordpress后台中文,吉安seo招聘,电子商务网站建设选择一、递归的定义1.什么是递归#xff1a;在一个函数里在调用这个函数本身2.最大递归层数做了一个限制#xff1a;997#xff0c;但是也可以自己限制1 deffoo():2 print(n)3 n14 foo(n)5 foo(1)3.最大层数限制是python默认的#xff0c;可以做修改#xff0c;但是不建议你修…一、递归的定义1.什么是递归在一个函数里在调用这个函数本身2.最大递归层数做了一个限制997但是也可以自己限制1 deffoo():2 print(n)3 n14 foo(n)5 foo(1)3.最大层数限制是python默认的可以做修改但是不建议你修改。(因为如果用997层递归都没有解决的问题要么是不适合使用递归来解决问题要么就是你的代码太烂了)1 importsys2 sys.setrecursionlimit(10000000)#修改递归层数3 n04 deff():5 globaln6 n17 print(n)8 f()9 f()我们可以通过以上代码导入sys模块的方式来修改递归的最大深度。sys模块所有和python相关的设置和方法4.结束递归的标志return5.递归解决的问题就是通过参数来控制每一次调用缩小计算的规模6.使用场景数据的规模在减少但是解决问题的思路没有改变7.很多排序算法会用到递归二、递归小应用1.下面我们来猜一下小明的年龄小明是新来的同学丽丽问他多少岁了。他说我不告诉你但是我比滔滔大两岁。滔滔说我也不告诉你我比晓晓大两岁晓晓说我也不告诉你我比小星大两岁小星也没有告诉他说我比小华大两岁最后小华说我告诉你我今年18岁了这个怎么办呢当然有人会说这个很简单啊知道小华的就会知道小星的知道小星的就会知道晓晓的以此类推就会知道小明的年龄啦。这个过程已经非常接近递归的思想了。小华182小星202晓晓222滔滔242小明262上面的图我们可以用个序号来表示吧age(5) age(4)2age(4) age(3) 2age(3) age(2) 2age(2) age(1) 2age(1) 18那么代码该怎么写呢1 defage(n):2 if n 1:3 return 184 else:5 return age(n - 1) 267 retage(6)8 print(ret)2.一个数除2直到不能整除21 defcal(num):2 if num%20:#先判断能不能整除3 numnum//24 returncal(num)5 else:6 returnnum7 print(cal(8))3.如果一个数可以整除2就整除不能整除就*311 deffunc(num):2 print(num)3 if num1:4 return5 if num%20:6 numnum//27 else:8 numnum*319 func(num)10 func(5)三、三级菜单menu { 北京: { 海淀: { 五道口: { soho: {}, 网易: {}, google: {} }, 中关村: { 爱奇艺: {}, 汽车之家: {}, youku: {}, }, 上地: { 百度: {}, }, }, 昌平: { 沙河: { 老男孩: {}, 北航: {}, }, 天通苑: {}, 回龙观: {}, }, 朝阳: {}, 东城: {}, }, 上海: { 闵行: { 人民广场: { 炸鸡店: {} } }, 闸北: { 火车战: { 携程: {} } }, 浦东: {}, }, 山东: {}, }1 defthreeLM(menu):2 whileTrue:3 for key in menu:#循环字典的key打印出北京上海山东4 print(key)5 nameinput(:).strip()6 if nameback or namequit:#如果输入back就返回上一层。如果输入quit就退出7 return name #返回的name的给了ret8 if name inmenu:9 retthreeLM(menu[name])10 if retquit:return quit#如果返回的是quit就直接return quit 了就退出了11 threeLM()12 #print(threeLM(menu))#print打印了就返回出quit了threeLM()没有打印就直接退出了四、二分查找算法从这个列表中找到55的位置l 【2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88】这就是二分查找从上面的列表中可以观察到这个列表是从小到大依次递增的有序列表。按照上面的图就可以实现查找了。1 l [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]2 deffind(l,aim):3 midlen(l)//2#取中间值//长度取整(取出来的是索引)4 if l[mid]aim:#判断中间值和要找的那个值的大小关系5 new_ll[:mid]#顾头不顾尾6 return find(new_l,aim)#递归算法中在每次函数调用的时候在前面加return7 elif l[mid]8 new_ll[mid1:]9 returnfind(new_l,aim)10 else:11 returnl[mid]12 print(find(l,66))1 l [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]2 def func(l, aim,start 0,end len(l)-1):3 mid (startend)//2#求中间的数4 if not l[start:end1]:#如果你要找的数不在里面就return你查找的数字不在这个列表里面5 return 你查找的数字不在这个列表里面6 elif aim l[mid]:7 return func(l,aim,mid1,end)8 elif aim 9 return func(l,aim,start,mid-1)10 elif aim l[mid]:11 print(bingo)12 returnmid1314 index func(l,55)15 print(index)16 #print(func(l,41))