如何重复执行函数 n 次
我正在尝试用Python写一个函数,类似于:
def repeated(f, n):
...
这里的f
是一个接受一个参数的函数,而n
是一个正整数。
举个例子,如果我把平方定义为:
def square(x):
return x * x
然后我调用
repeated(square, 2)(3)
这将把3平方2次。
7 个回答
3
像这样吗?
def repeat(f, n):
if n==0:
return (lambda x: x)
return (lambda x: f (repeat(f, n-1)(x)))
9
使用 reduce
和 lambda 函数。你可以从一个参数开始,接着是你想要调用的所有函数,来构建一个元组:
>>> path = "/a/b/c/d/e/f"
>>> reduce(lambda val,func: func(val), (path,) + (os.path.dirname,) * 3)
"/a/b/c"
26
这样就可以了:
def repeated(f, n):
def rfun(p):
return reduce(lambda x, _: f(x), xrange(n), p)
return rfun
def square(x):
print "square(%d)" % x
return x * x
print repeated(square, 5)(3)
输出结果:
square(3)
square(9)
square(81)
square(6561)
square(43046721)
1853020188851841
或者说不使用 lambda
呢?
def repeated(f, n):
def rfun(p):
acc = p
for _ in xrange(n):
acc = f(acc)
return acc
return rfun