Python 为递归编写抽象减缩函数

Python 为递归编写抽象减缩函数,python,python-3.x,algorithm,recursion,iteration,Python,Python 3.x,Algorithm,Recursion,Iteration,我试图推广阶乘函数,但在添加“reducer”函数时遇到问题,例如: def factorial(n): if FACTORIAL_RETURN_CONDITION(n=1): return 1 else: return n * factorial(n-1) # this line -- how to 'combine' n with factorial(n-1) 以下是我到目前为止的情况: import traceback RETURN_CO

我试图推广阶乘函数,但在添加“reducer”函数时遇到问题,例如:

def factorial(n):
    if FACTORIAL_RETURN_CONDITION(n=1):
        return 1
    else:
        return n * factorial(n-1) # this line -- how to 'combine' n with factorial(n-1)
以下是我到目前为止的情况:

import traceback

RETURN_CONDITION  = lambda **kwargs: kwargs['n'] == 1  # if n=1, we quit
RETURN_VALUE      = lambda **kwargs: 1                  # we could just write '1' here but keep it in lambda so can easily change
DELTA             = lambda **kwargs: (exec("kwargs['n']-=1"),kwargs)[1]
REDUCER           = lambda **kwargs: ???


def func(**kwargs):
    args_as_str = ', '.join([f'{k}={v!r}' for k,v in kwargs.items()])
    print ("Called func(%s)" % args_as_str)
    if RETURN_CONDITION(**kwargs):
        return RETURN_VALUE()
    else:
        res = kwargs['n'] * func(**DELTA(**kwargs)) # how to get rid of this line and use the reducer?
        print ("Returning intermediate result: %s" % res, kwargs)
        return res

对于上述内容来说,这是非常抽象和过分的,但我基本上是在尝试找出通用的递归模式,并将变量/条件抽象到通用模板中。编写以下“reducer”函数的示例方法是什么?

这是否回答了您的问题@格里斯玛:不,我已经读过了。这是一个很好的答案,但我只是想弄清楚如何编写一个reducer函数,如果可能的话。