递归python函数中的持久对象

Kav*_*_kh 2 python recursion persistent

我正在尝试编写一个递归函数,需要在递归时存储和修改对象(比如一个集合).我应该在函数内部使用全局名称吗?另一种选择是修改或继承函数参数的类,以便它可以保留这个持久对象,但我发现它并不优雅.如果我完全放弃递归,我也可以使用堆栈...

有这样做的pythonic方式吗?发电机可以做到这一点吗?

Mik*_*ott 9

只需通过递归方法传递持久对象.

def recursivemethod(obj_to_act_on, persistent_obj=None):

    if persistent_obj == None:
        persistent_obj = set()

    # Act on your object

    return recursivemethod(newobj, persistent_obj)
Run Code Online (Sandbox Code Playgroud)