Python:如何计算我的递归函数执行的次数?

pin*_*eng 0 python recursion

假设我有一个二叉搜索树 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

如果我运行以下函数,我想知道递归函数执行了多少次(在以下示例中为31)

def loopBST(root):
    if not root:
        return
    loopBST(root.left)
    loopBST(root.right)
Run Code Online (Sandbox Code Playgroud)

我可以通过创建一个全局变量来获得

global ind 
ind = 0
def loopBST(root):
    global ind
    ind += 1
    if not root:
        return
    loopBST(root.left)
    loopBST(root.right)
loopBST(bsttree)
Run Code Online (Sandbox Code Playgroud)

变量ind将为31。

问题是,如何inddfs函数内部创建此变量而不是创建全局变量?

Old*_*800 5

您可以使用参数。

def loopBST(root, times=0):
    times += 1
    if not root:
        return times
    times = loopBST(root.left, times=times)
    times = loopBST(root.right, times=times)
    return times
loopBST(bsttree)
Run Code Online (Sandbox Code Playgroud)


Ste*_*ann 5

您可以返回执行次数:

def loopBST(root):
    if not root:
        return 1
    return 1 + loopBST(root.left) + loopBST(root.right)
Run Code Online (Sandbox Code Playgroud)