将参数传递给递归函数

时间:2014-01-17 20:53:06

标签: python recursion closures scope

我想将递归函数的第一次调用中的参数传递给后来的函数:

示例:

def function(x):
    if base_case:
        return 4
    else:
        return function(x_from_the_first_call + x_from_this_call)

有没有比关闭更好的方法呢?

E.g。

def function(outer_x):
    def _inner(x)
        if base_case:
            return 4
        else:
            return function(outer_x + x)
    return _inner(outer_x)

1 个答案:

答案 0 :(得分:1)

如果你在某种程度上改变x的功能,那么这应该是我认为的:

def function(x, *args):
    if base_case:
        return 4
    else:
        new_x = x+1 # some change to x

        if args:
            # in args all previous x values

        # remove if in case if you need all previous values
        if not args:
            args.append(x)

        return function(new_x, *args)