首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python上的高阶函数

Python上的高阶函数
EN

Stack Overflow用户
提问于 2018-02-17 10:52:42
回答 2查看 275关注 0票数 1

我得到了一个函数列表,并被要求用add1repeated定义plus(x,y)plus是一个接受两个数字并返回总数的函数。但是,我无法使用我的定义获得任何输出。它只是给出了函数的名称。如有任何帮助,我们不胜感激!

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-17 11:02:27

这是一种有趣的加法。它工作得很好,你只是遗漏了一件事。Repeated返回一个函数,该函数将给出sum,而不是sum本身。所以你只需要像这样在x上调用repeated(add1, y)

代码语言:javascript
复制
def plus(x, y):
    return repeated(add1, y)(x)

代码的其余部分工作正常。

票数 1
EN

Stack Overflow用户

发布于 2018-02-17 11:07:10

细节是plus返回一个函数,这就是为什么您看到的是函数的名称而不是数字值。我想这就是为什么在plus中有x参数的原因。只需将此行代码更改为

代码语言:javascript
复制
return repeated(add1, y)(x)

这将使用x中的值计算repeated的返回函数。

所以使用

plus(5, 1)

>> 6

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48837431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档