高阶函数——递归

  

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
  

高阶函数——递归