我收到了一份功能列表,并要求plus(x,y)
和add1
定义repeated
。 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)
答案 0 :(得分:1)
这是一种有趣的添加方式。它运作得很好,你只是错过了一件事。 Repeated
返回一个函数,它将给出总和,而不是总和本身。因此,您只需在repeated(add1, y)
上拨打x
,就像这样
def plus(x, y):
return repeated(add1, y)(x)
其余代码工作正常。
答案 1 :(得分:1)
详细信息是plus
返回一个函数,这就是您看到函数名称而不是数值的原因。我认为这就是x
中存在plus
参数的原因。只需将此行代码更改为
return repeated(add1, y)(x)
这将使用x中的值来评估repeated
的返回函数。
所以使用
plus(5, 1)
>> 6