我想创建一个函数foo()
,它将另一个函数作为输出。此输出函数是每次使用自由参数a i 的指数(或其他)的总和。此输出函数应具有作为参数的所有a i 加上一个自由变量。
示例:
调用foo(3)
应输出相当于lambda t,a1,a2,a3: exp(a1*t)+exp(a2*t)+exp(a3*t)
我试着像这样编程:
def foo(n):
fh = lambda t,A1:exp(A1*t)
def fg(j):
if (j==1):
return fh
else:
return lambda t,A1,A2:fg(j-1)(t,A1)+fh(t,A2)
return fg(n)
但显然是错的。我注意到foo(n)
可以通过"做"像lambda t,a1,...,a(n): foo(n-1)(t,a1,...,a(n-1))+exp(a(n)*t)
这样的迭代,但我没有设法以一种简单的方式做到这一点......
感谢您的帮助!
答案 0 :(得分:1)
您不需要递归。您可以简单地定义一个函数,它接受任意数量的参数:
def f(t, *a):
return sum(exp(x * t) for x in a)