rlms
rlms

Reputation: 11060

Passing arguments down recursive functions

I want to pass an argument from the first call of a recursive function down to the later ones:

Example:

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

Is there any better way of doing this than a closure?

E.g.

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

Upvotes: 1

Views: 3458

Answers (1)

ndpu
ndpu

Reputation: 22571

If you will change x somehow in function, then this should work i think:

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)

Upvotes: 1

Related Questions