首页 > 编程语言 > 详细

递归,Python 函数编程技巧之一

时间:2020-08-20 16:21:56      阅读:59      评论:0      收藏:0      [点我收藏+]

函数的递归

函数调用自身的编程技巧称为递归。

函数内部可以调用其他函数,当然在函数内部也可以调用自己。

递归的特点

  • 函数内部的代码是相同的,只是针对参数不同,处理的结果不同。
  • 当参数满足一个条件时,函数不再执行,这个非常重要,通常被称为递归的出口,否则会出现死循环。

示例代码:

def sum_numbers(num):

    print(num)
    # 递归的出口很重要,否则会出现死循环
    if num == 1:
        return
    # 自己调用自己
    sum_numbers(num - 1)

sum_numbers(3)
# 3
# 2
# 1

技术分享图片

递归分为两个重要的阶段:递推+回溯。

  • 递推:函数不断减少问题规模直至最终的终止条件。
  • 回溯:拿到最终明确的值后,返回给上次调用进行处理,直至初始层。

由于无限的递归调用会占用大量的内存,因此 python 对函数的递归调用的深度做了限制,当递归调用的次数达到限制时,就会抛出异常。要避免出现这种情况,就必须让递归调用在满足某个特定条件下终止。

递归案例

需求:计算数字累加,接收一个 num 的整数参数,计算 1 + 2 + ... num 的结果。

def sum_numbers(num):

    if num == 1:
        return 1

    # 假设 sum_numbers 能够完成 num - 1 的累加
    temp = sum_numbers(num - 1)

    # 函数内部的核心算法就是两个数字的相加
    return num + temp

print(sum_numbers(2))
# 3

递归是一个编程技巧,初次接触递归会感觉有些吃力!

在处理不确定的循环条件时,使用递归格外有用,例如:遍历整个文件目录的结构。


技术分享图片

递归,Python 函数编程技巧之一

原文:https://www.cnblogs.com/studyming/p/13534742.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!