我有一个以下形式的递归函数:
def f():
if cond1:
...
f()
elif cond2:
...
我已经“机械地”将其转换为这样的迭代函数:
def f():
while True:
if cond1:
...
elif cond2:
...
break
else:
break
我相信这种转换是有效的,但是有没有更优雅的方法来做到这一点?例如,不需要多个
break
语句?
如果函数需要在状态之间转换,您可以使用变量显式管理状态。
def f():
should_continue = True
while should_continue:
if cond1:
...
elif cond2:
...
should_continue = False
else:
should_continue = False
当条件满足时立即退出该功能。如果逻辑变得更复杂,这段代码会工作得更好。