【发布时间】:2014-02-07 08:37:18
【问题描述】:
我想将第一次调用递归函数的参数传递给后面的调用:
例子:
def function(x):
if base_case:
return 4
else:
return function(x_from_the_first_call + x_from_this_call)
有没有比闭包更好的方法?
例如
def function(outer_x):
def _inner(x)
if base_case:
return 4
else:
return function(outer_x + x)
return _inner(outer_x)
【问题讨论】:
-
你能让你的函数接受两个参数吗?然后只需分别传递两个值(初始调用的默认值)并将它们添加到函数中。
-
@BrenBarn 你认为这比关闭更干净吗?我这样做的问题是它会导致有一个额外的参数,这可能会使任何调用该函数的人不知道实现的人感到困惑,这让我觉得是一件坏事。
-
我通常使用一个单独的命名参数,默认为
None。并且“因为我们都是同意的成年人”在 python 中,大概任何更改该 arg 的调用者都有这样做的充分理由。
标签: python recursion closures scope