如何获取Python递归中使用的堆栈帧总数?

头脑风暴

这是计算斐波那契数列的简单代码:

def fib(n):
    if n==0 or n==1:
       return 1
    else:
      return fib(n-1)+fib(n-2)

如果n = 10,我想知道此计算涉及多少堆栈帧。有没有一种实时获取方法?

拉姆达童话

最简单的解决方案是添加一个额外的参数,然后将其穿过结果:

def fib(n, depth=1):
    if n == 0 or n == 1:
        return (1, depth)
    else:
        result1, depth1 = fib(n-1, depth+1)
        result2, depth2 = fib(n-2, depth+1)
        return (result1 + result2, max(depth1, depth2))

这将返回斐波那契数和递归深度。

测试:

>>> list(map(fib, range(5)))
[(1, 1), (1, 1), (2, 2), (3, 3), (5, 4)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在递归中使用变量

来自分类Dev

在递归中使用--a和a-1

来自分类Dev

递归中的python列表

来自分类Dev

在递归中使用引用会导致内存泄漏?

来自分类Dev

在 C 递归中使用字符输入

来自分类Dev

了解递归中的堆栈展开(遍历树)

来自分类Dev

递归中堆栈的工作方式

来自分类Dev

了解递归中的堆栈展开(遍历树)

来自分类Dev

如何使用堆栈而不是递归?

来自分类Dev

在C中使用递归的堆栈溢出

来自分类Dev

在Python中使用堆栈

来自分类Dev

如何使用pandas-python递归构造数据帧的列?

来自分类Dev

如何使用pandas-python递归构造数据帧的列?

来自分类Dev

使用lazy-seq递归占用堆栈帧吗?

来自分类Dev

GDB-获取当前线程的调用堆栈上的帧总数

来自分类Dev

如何在Java中使用递归获取goldenRatio?

来自分类Dev

如何从递归父/子树中获取子节点的总数

来自分类Dev

如何在逻辑回归中使用权重

来自分类Dev

如何选择要在回归中使用的列?

来自分类Dev

在回归中使用gurobi python的荒谬解决方案

来自分类Dev

在递归中使用全局变量是否是一种好习惯

来自分类Dev

在Scala中进行功能编程时,在递归中使用数组是否有效?

来自分类Dev

递归中使用的C代码语句的等效Java代码语句

来自分类Dev

在递归中使用全局变量是否是一种好习惯

来自分类Dev

如何使用mysql获取总数和子集总数?

来自分类Dev

在函数中使用递归时,堆栈空间不足

来自分类Dev

如何使用awk获取记录总数-Solaris

来自分类Dev

如何在Python中使用递归查找素数

来自分类Dev

如何在Python中使用递归拆分字符串?