【发布时间】:2021-11-01 01:17:19
【问题描述】:
我正在尝试在python中实现一个递归函数,让我们调用这样的函数F,这样的函数的输入是一个列表,我们称之为a。 F的实现逻辑应该如下,
def F(a):
if this is first time I run this function (in other words if this is not the first time I run this function, leave a as it is):
a.reverse()
then do something recursively calling F
我想问一下,实现这一目标的最简单方法是什么。 python真的支持这样的逻辑吗?
【问题讨论】:
-
你要么创建一个包装函数来调用
F,然后先做你需要做的事情,或者像F(a, first_time=False)这样的事情,然后通过F(a, True)调用它 -
@Sayse Wrapper 解决方案更简洁,它避免了在每次递归调用中评估
first_time。包装器是一次性设置问题或数据清理(如边界检查)的良好解决方案。 -
您好,谢谢您的评论。我不希望函数中有任何额外的变量。那么在这种情况下,你能详细说明一下你所说的包装函数是什么意思吗?
-
你在做任何你需要的预设后调用
def Fx()调用F -
@pjs - 是的,假设您处于可以轻松重构以引入包装器功能的位置,后者适用于情况并非如此的时候