我该如何将这个递归函数转换为迭代?

问题描述 投票:0回答:1

我有一个以下形式的递归函数:

def f():
    if cond1:
        ...
        f()
    elif cond2:
        ...

我已经“机械地”将其转换为这样的迭代函数:

def f():
    while True:
        if cond1:
            ...
        elif cond2:
            ...
            break
        else:
            break

我相信这种转换是有效的,但是有没有更优雅的方法来做到这一点?例如,不需要多个

break
语句?

python recursion iteration
1个回答
0
投票

如果函数需要在状态之间转换,您可以使用变量显式管理状态。

def f():
    should_continue = True
    while should_continue:
        if cond1:
            ...
        elif cond2:
            ...
            should_continue = False
        else:
            should_continue = False

当条件满足时立即退出该功能。如果逻辑变得更复杂,这段代码会工作得更好。

© www.soinside.com 2019 - 2024. All rights reserved.