python递归函数使用详解

 更新时间:2023年09月13日 08:32:43   作者:zhangfanshixiaobai  
递归函数是一种在函数内部调用自身的编程技巧。在Python中,我们可以使用递归函数来解决一些需要重复执行相同操作的问题。递归函数通常包含两个部分:基本情况和递归情况。基本情况是指函数停止调用自身的条件,而递归情况是指函数调用自身来解决更小规模的问题。

课前练习

请实现一个装饰器,把'函数的返回值'+100然后'返回'

def ount(fun):
    def werrod(*ardes,**warrrts):
        res=fun(*ardes,**warrrts)
        return res+100
    return werrod
@ount
def funs(intes):
    return int(intes)
res=funs(100)
print(res)

请实现一个装饰器,通过一次调用使函数重复执行5次

def ount(fun):
    def werrod(*ardes,**warrrts):
        count=0
        while count<5:
            print('输出')
            fun(*ardes,**warrrts)
            count+=1
    return werrod
@ount
def funs():
    print('循环')
funs()

请实现一个装饰器每次调用函数时,将函数名字写入文件中

def ount(fun):
    def werrod(*ardes,**warrrts):
        with open('qw','a',encoding='utf-8')as  f:
            f.write(f'name={fun.__name__}\n')
            fun(*ardes,**warrrts)
    return werrod
@ount
def funs():
    pass
funs()

递归函数

递归:直接或者间接的调用其他函数
def index():
    print('from index')
    func()
def func():
    print('from func')
    index()
func()
递归在实际编码中是不允许出现的,一旦出现了无限递归就会直接报错
1. 递推
        一层一层的往下寻找答案
2. 回溯
        通过最后一个结果往回寻找最开始的那个答案
    递归是必须有结束条件!!!!

递归的使用场景

阶乘运算
def dig(fun):
    def inter(ase):
        if ase==0:
            return 1
        else:
            return inter(ase - 1) * ase
    return inter(fun)
print(dig(5))
求第5个人的年龄
def inter(ase):
    if ase == 1:
        return 18
    return inter(ase - 1) +2#每个人的年龄相差为2
res=inter(5)
print(res)

算法二分法

二分法的原理

二分法的原理:
	1. 列表必须先排序(从小到大,从大到小)
	2. 折半查找

思路

一般思路
将列表的元素一个一个的经行比较
然后得出结果
l = [11, 2, 3, 43, 55, 67, 23, 45, 45, 88, 99, 66,]
  for i in l:
        if i == 66:
            print('找到了')
二分法
l=[12,23,124,123,41,24,134,12]
l.sort()
target_num = 200
def my_half(l,target_num):
    if len(l) == 0:
        print('没找到')
        return
    # 3. 取的就是中间的那个索引
    middle_index = len(l) // 2 # 向下取整 5 // 2 == 2  6 // 2 == 3
    if target_num > l[middle_index]:
        l_right = l[middle_index+1:]  #
        print(l_right)
        my_half(l_right, target_num)
    elif target_num < l[middle_index]:
        l_left = l[:middle_index]
        print(l_left)
        my_half(l_left, target_num)
    else:
        print('找到了')
my_half(l, target_num)

三元表达式

对于只有二选一的情况,我们推荐使用三元表达式
	语法结构:
res = 条件成立之后的结果 if 条件 else 条件不成立之后的结果
def my_max(a, b):
    return a if a > b else b
res = my_max(1, 2)
"""还支持嵌套"""
## 不推荐写太多的嵌套,一般两层就够了,超过两层了,建议不这样写,面试的时候:成数非常多
res = 2 if 2 > 10 else ( 10 if False else (100 if 10 > 5 else (2 if False else 1)))
print(res)

列表生成式

names_list = ['kevin', 'jerry', 'tank', 'oscar']
# # 列表生成式
res = [ name + '_SB' for name in names_list]
print(res)
res = [name+'_SB' if name != 'jerry' else name for name in names_list]
print(res)

递归函数是一种强大的编程技巧,可以解决一些需要重复执行相同操作的问题。在Python中,我们可以使用递归函数来简化代码逻辑和实现复杂的算法。递归函数的核心思想是将一个大问题分解为更小规模的子问题,并通过调用自身来解决这些子问题。递归函数通常包含两个部分:基本情况和递归情况。基本情况是指函数停止调用自身的条件,通常是问题规模达到最小或满足某个条件时。递归情况是指函数调用自身来解决更小规模的问题,直到达到基本情况。在编写递归函数时,需要注意递归深度和结束条件,否则可能导致无限循环或栈溢出等问题。递归函数的实现需要仔细思考问题的分解方式和递归调用的参数传递。递归函数在解决一些问题时可以提供简洁的解决方案,但也可能导致性能问题,因为递归调用会占用额外的内存和时间。因此,在使用递归函数时,需要权衡其优缺点,并根据具体情况选择合适的解决方法。

到此这篇关于python递归函数使用详解的文章就介绍到这了,更多相关python递归函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python接口自动化之浅析requests模块post请求

    Python接口自动化之浅析requests模块post请求

    这篇文章Python接口自动化之浅析requests模块post请求,以下主要介绍requests模块中的post请求的使用,post源码,data、json参数应用场景及实战
    2021-08-08
  • 使用SAE部署Python运行环境的教程

    使用SAE部署Python运行环境的教程

    这篇文章主要介绍了使用SAE部署Python运行环境的教程,SAE作为新浪的在线软件部署平台,在国内拥有一定的性价比,需要的朋友可以参考下
    2015-05-05
  • torch 中各种图像格式转换的实现方法

    torch 中各种图像格式转换的实现方法

    这篇文章主要介绍了torch 中各种图像格式转换的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • python中的计时器timeit的使用方法

    python中的计时器timeit的使用方法

    本篇文章主要介绍了python中的计时器timeit的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Python实现HTML转Word的示例代码

    Python实现HTML转Word的示例代码

    这篇文章主要为大家详细介绍了使用Python实现HTML转Word的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • 基于Python中的turtle绘画星星和星空

    基于Python中的turtle绘画星星和星空

    这篇文章主要介绍了基于Python中的turtle绘画星星和星空,turtle 是 Python 中自带的绘图模块,下文章关于turtle绘画星星和星空的详细内容,需要的朋友可以参考一下,可以当作学习小练习
    2022-03-03
  • python删除过期log文件操作实例解析

    python删除过期log文件操作实例解析

    这篇文章主要介绍了python删除过期log文件,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python发送form-data请求及拼接form-data内容的方法

    Python发送form-data请求及拼接form-data内容的方法

    这篇文章主要介绍了Python发送form-data请求及拼接form-data内容的方法,文中采用的是requests的方式发送multipart/form-data请求,需要的朋友可以参考下
    2016-03-03
  • Python如何在DataFrame增加数值

    Python如何在DataFrame增加数值

    这篇文章主要介绍了Python如何在DataFrame增加数值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 使用python将CSV和Excel表格数据导入到Word表格

    使用python将CSV和Excel表格数据导入到Word表格

    在不同格式的文档之间进行数据传输是非常重要的操作,例如将CSV和Excel表格数据导入到Word文档中,不仅可以实现数据的有效整合与展示,还能极大地提升工作效率和文档的专业性,本文将介绍如何使用Python将CSV和Excel表格数据导入到Word文档中并创建表格
    2024-09-09

最新评论