1。高阶函数
1.1高阶函数定义
变量可以指向函数,函数的参数能接受变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称为高阶函数。
引用>
只要满足以下任意一个条件,即是高阶函数
1。接收一个或多个函数作为输入
2.返回返回另外一个函数<代码> # !/usr/bin/env python # - * -编码:utf - 8 - * #作者:个人简历 def添加(x, y,函数): 返回func (x) + func (y) res=添加(3、6、abs) 打印(res) E: \ PythonProject \ python测试\ venvP3 \ \ python脚本。exe E:/PythonProject/python测试/BasicGrammer/test.py 9 过程完成退出代码0 代码>2。递归
2.1递归定义
在函数内部,可以调用其它函数。如果一个函数在内部调用自身,这个函数就是递归函数。
引用><代码> # !/usr/bin/env python # - * -编码:utf - 8 - * #作者:个人简历 def calc (n): 打印(n) 如果int (n/2)==0: 返回n 返回calc (int (n/2)) 钙(4) E: \ PythonProject \ python测试\ venvP3 \ \ python脚本。exe E:/PythonProject/python测试/BasicGrammer/test.py 4 2 1 过程完成退出代码0 代码>2.2递归的执行过程
<代码> # !/usr/bin/env python # - * -编码:utf - 8 - * #作者:个人简历 def calc (n): 打印(n) 如果int (n/2)比;0: 钙(int (n/2)) 打印(n) 钙(4) E: \ PythonProject \ python测试\ venvP3 \ \ python脚本。exe E:/PythonProject/python测试/BasicGrammer/test.py 4 2 1 1 2 4 过程完成退出代码0 代码>
2.3递归特性
1。必须有一个明确的结束条件
引用>
2。每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3 .递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时通过栈(栈)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以递归调用的次数过多,会导致栈溢出)<代码> # !/usr/bin/env python # - * -编码:utf - 8 - * #作者:个人简历 def递归(n): 打印(n) 递归(n + 1) 递归(1) 运行 … 996 997 998 过程完成退出代码1 “到998年程序就自动停止了,是因为递归的最大深度是有限制的,防止栈溢出”代码> >之前二2.4分法查找
<代码> # !/usr/bin/env python # - * -编码:utf - 8 - * #作者:个人简历 data=(1、3、5、7、8、10、30、34、35) def binary_search (source_data search_data): 打印(source_data) 如果len (source_data)比;1: mid_data_index=int len (source_data)/(2) 如果source_data mid_data_index==search_data: print(“优秀,你找到它!”) elif source_data [mid_data_index]比;search_data: source_data=source_data [0 mid_data_index): binary_search (source_data search_data) elif source_data [mid_data_index] & lt;search_data: source_data=source_data [mid_data_index + 1:] binary_search (source_data search_data) 其他: 如果len (source_data)==0: print(“源数据为空了!”) 其他: 如果source_data [0]==search_data: 打印(“你找到它!”) 其他: print(“没有这个数!”) binary_search(数据,30) E: \ PythonProject \ python测试\ venvP3 \ \ python脚本。exe E:/PythonProject/python测试/BasicGrammer/test.py (1、3、5、7、8、10、30日,34岁,35) (10、30、34、35) (10、30) 优秀的,你找到它! 过程完成退出代码0 “找4” binary_search(数据,4) E: \ PythonProject \ python测试\ venvP3 \ \ python脚本。exe E:/PythonProject/python测试/BasicGrammer/test.py (1、3、5、7、8、10、30日,34岁,35) (1、3、5、7) (1、3) [] 源数据为空! 过程完成退出代码0 代码>2.5求阶乘
<代码> # !/usr/bin/env python # - * -编码:utf - 8 - * #作者:个人简历 def多(n): 如果n==1: 返回1 其他: 返回n *多(n - 1) 打印(多(4)) E: \ PythonProject \ python测试\ venvP3 \ \ python脚本。exe E:/PythonProject/python测试/BasicGrammer/test.py 24 过程完成退出代码0高阶函数——递归