函数的应用 递归函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的应用 递归函数相关的知识,希望对你有一定的参考价值。

解耦的概念

解耦  完成一个完整的功能, 但是功能的规模要尽量的小,并且和这个功能无关的其他代码应该和这个函数分离

 1 增强代码的重用性 --------函数实现单独功能

 2 减少代码变更时的互相影响---------- 减少关联性  方便单独使用

 

递归函数 


一个函数在内部使用了自己 调用自己

每次调用一次自己 就会新建一块内存空间----浪费空间-- 最多997
import sys

sys.setrecursionlimit(1000000)  # 修改最大范围 ---但是 python 自己会根据计算机性能停止

写递归函数必须有一个结束条件

二分查找的递归

没有回归只有传递

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] def search(aim_num,l,start=0,end=len(l)-1): mid=(end-start)//2 + start if l[mid]>aim_num: search(aim_num,l,start,mid-1) elif l[mid]<aim_num: search(aim_num,l,mid+1,end) elif l[mid]==aim_num: print(mid,l[mid]) search(22,l)

 

有传递有回归

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] def func(l,aim,start=0,end=len(l)-1): mid =(start+end)//2 if not l[start:end+1]: return elif aim >l[mid]: return func(l,aim,mid+1,end) elif aim<l[mid]: return func(l,aim,start,mid-1) elif aim==l[mid]: print(Right) return mid index=func(l,2) print(index)

 

三级菜单 递归

menu = { 北京: { 海淀: { 五道口: { soho: {}, 网易: {}, google: {} }, 中关村: { 爱奇艺: {}, 汽车之家: {}, youku: {}, }, 上地: { 百度: {}, }, }, 昌平: { 沙河: { 老男孩: {}, 北航: {}, }, 天通苑: {}, 回龙观: {}, }, 朝阳: {}, 东城: {}, }, 上海: { 闵行: { "人民广场": { 炸鸡店: {} } }, 闸北: { 火车战: { 携程: {} } }, 浦东: {}, }, 山东: {}, } def Order(dic): for city in dic: print(city) input_city =input(>> 请按提示输入,输入q退出!).strip() if input_city==q: print(退出!) return input_city elif input_city in dic: if dic[input_city]: Order(dic[input_city]) else: print(么有内容了) else: Order(dic) Order(menu) def threeLM(dic): while True: for k in dic:print(k) key = input(input>>).strip() if key == b or key == q:return key elif key in dic.keys() and dic[key]: ret = threeLM(dic[key]) if ret == q: return q elif (not dic.get(key)) or (not dic[key]) : continue threeLM(menu)

 

以上是关于函数的应用 递归函数的主要内容,如果未能解决你的问题,请参考以下文章

vue递归组件的一些理解

如何在自定义PyYAML构造函数中处理递归?

nodejs常用代码片段

少女学习日记——函数进阶闭包以及递归

bash脚本之函数简单介绍应用及函数的简单递归调用

返回函数调用与仅在递归期间再次调用函数有啥区别?