我在中期学习,考试形式有固定的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)))