Python:使用其他HOF定义高阶函数(HOF)

时间:2018-03-21 13:15:54

标签: python-3.x higher-order-functions

我在中期学习,考试形式有固定的qns。 高阶函数(HOF)只是一个通用函数,它使其他函数变得更具体。以下是2个高阶函数。

def tail(f, a, n):
    if n == 0:
        return a
    else:
        return tail(f, f(n, a), n-1)

def fold(op, f, n):
    if n==0:
        return f(0)
    else:
        return op(f(n), fold(op, f, n-1))
  

我的问题是,是否可以根据折叠来定义尾部(如上所示)(如下面的格式所示)。如果可能,任何人都可以建议T1,T2,T3的表达式是什么?如果不可能,请解释原因。

def tail(f,a,n):
    return fold(<T1>,<T2>,<T3>)

我试了很久这个问题,以下是我达到的最新一段代码,但仍然面临错误。

def tail2(f, a, n):  
    return fold(lambda n,a: a if n==0 else f(n,a),
                lambda n: f(n,a),
                n)

测试用例:元组逆转

def test(seq,f, a, n):
    print(tail(f, a, n)) #test original func

    print(tail2(f, a, n)) #test invented func

x=(1,2,3,4,5)
print(test(x,lambda n,a: a+(x[n-1],),(),len(x)))

0 个答案:

没有答案