美文网首页
Python3之递归函数简单示例

Python3之递归函数简单示例

作者: 若数 | 来源:发表于2019-06-06 18:41 被阅读0次
178.jpg

概述

递归函数即直接或间接调用自身的函数,且递归过程中必须有一个明确的递归结束条件,称为递归出口。递归极其强大一点就是能够遍历任意的,不可预知的程序的结构,比如遍历复杂的嵌套列表。

递归求和

我们可以利用递归函数实现一个Python内置函数sum()的递归版。

# 递归
def d_sum(L):
    if not L:
        return 0
    else:
        return L[0] + d_sum(L[1:])

sum_l = d_sum(range(10))
print(sum_l)

示例结果

45

该递归函数怎么实现列表元素相加的呢? 我们知道函数是有本地作用域的,对函数调用的每一个打开的时候,在运行时调用堆栈上都有自己的一个本地作用域的副本,即L在每个层级都是不同的,比如我们可以通过每次调用时添加一个打印语句,更加直观展示每个层级L的情况

# 递归
def d_sum(L):
    # 打印该层级L
    print(L)
    if not L:
        return 0
    else:
        return L[0] + d_sum(L[1:])
# 构建 0-10 数字元素列表
L = [i for i in range(10)]
sum_l = d_sum(L)
print(sum_l)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9]
[6, 7, 8, 9]
[7, 8, 9]
[8, 9]
[9]
[]
45

处理任意结构

比如我们可以利用递归计算一个嵌套的子列表结构中所有数字的总和

def dd_sum(L):
    tot = 0
    for x in L:
        if not isinstance(x, list):
            tot += x
        else:
            tot += dd_sum(x)
    return tot

# 嵌套列表
L = [1,[2,3],[4,[5,6,7],8],9]
sum_l = dd_sum(L)
print(sum_l)

示例结果:

45

这种处理方式看似复杂,我们可能更多会利用循环语句替代,但是使用递归函数逻辑简单清晰,这是使用的一大优点。

相关文章

  • Python3之递归函数简单示例

    概述 递归函数即直接或间接调用自身的函数,且递归过程中必须有一个明确的递归结束条件,称为递归出口。递归极其强大一点...

  • 递归函数简单示例

    一. 典型递归示例:计算整数 n 的阶乘,如 n = 5 , 5的阶乘 p = 1x2x3x4x5 。( p 表示...

  • 019 Python语法之递归

    递归 1. 递归的定义 递归应用在函数上就是函数体内部有自己本身的调用,简单来说就是自己调用自己 Python3默...

  • 前端算法学习-前篇

    递归 JavaScript中允许函数递归调用,示例: 当一个函数呗递归调用时,递归没有完成,函数的计算结果会被暂时...

  • Python学习之路(递归函数)

    函数之 递归函数 小结 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。针对尾递归优化的语言可以通...

  • 递归遍历文件目录

    递归示例: // 递归函数,函数体自己调用自己 //输出从$i到0再回到$i. function lt($i){ ...

  • JS 笔试题——Pow(x, n)

    题目:实现 ,即计算 的 次幂函数(即,)。 示例 1: 示例 2: 示例 3: 方法: 递归 分析: 可以...

  • c++ day03

    函数的原型声明 理解函数参数的传值 哥德巴赫猜想验证 函数引用调用示例 函数的嵌套调用 函数递归 递归就是自己调用...

  • Python生成器实现生产者消费者模式

    简单示例 python生成器原理:函数的调用满足“后进先出”的原则,最后被调用的函数应该第一个返回,函数的递归调用...

  • 递归函数

    1.概念:函数调用自己成为递归。 递归中必须包含停止递归的机制。 示例: unsigned long long f...

网友评论

      本文标题:Python3之递归函数简单示例

      本文链接:https://www.haomeiwen.com/subject/xtyuxctx.html