我得到了一个函数列表,并被要求用add1和repeated定义plus(x,y)。plus是一个接受两个数字并返回总数的函数。但是,我无法使用我的定义获得任何输出。它只是给出了函数的名称。如有任何帮助,我们不胜感激!
add1 = lambda x: x + 1
def compose(f, g):
return lambda x: f(g(x))
def repeated(f, n):
if n == 0:
return lambda x: x
else:
return compose(f, repeated(f, n - 1))
def plus(x, y):
return repeated(add1, y)发布于 2018-02-17 11:02:27
这是一种有趣的加法。它工作得很好,你只是遗漏了一件事。Repeated返回一个函数,该函数将给出sum,而不是sum本身。所以你只需要像这样在x上调用repeated(add1, y)
def plus(x, y):
return repeated(add1, y)(x)代码的其余部分工作正常。
发布于 2018-02-17 11:07:10
细节是plus返回一个函数,这就是为什么您看到的是函数的名称而不是数字值。我想这就是为什么在plus中有x参数的原因。只需将此行代码更改为
return repeated(add1, y)(x)这将使用x中的值计算repeated的返回函数。
所以使用
plus(5, 1)
>> 6
https://stackoverflow.com/questions/48837431
复制相似问题