我在Python的高阶函数方面遇到了困难。我需要编写一个名为repeat
的函数,它将函数f
在给定参数x
上重复n
次。
例如,repeat(f, 3, x)
等同于f(f(f(x)))
。
这是我的代码:
def repeat(f,n,x):
if n==0:
return f(x)
else:
return repeat(f,n-1,x)
当我尝试断言以下代码时:
plus = lambda x,y: repeat(lambda z:z+1,x,y)
assert plus(2,2) == 4
我遇到了一个 AssertionError
错误。我看过关于 如何重复执行一个函数n次的问题,但是我需要按照这种方式完成它,而我无法做到...
f(x)
函数是否返回任何值?除非另有说明,否则它将返回None
。 - Savirf(x)
的最后一次应用的结果吗? - thefourtheyerepeat
应该返回类似于return f(repeat(f,n-1,x))
这样的东西吗? - tgmathplus(0,2)
,它应该是2,但你的代码给出了3。它不会递归,所以调试应该很容易。 - Kevinassert
,你可以尝试查看plus
的实际返回值。使用不同的输入进行尝试,问题就会很容易被发现。 - interjay