递归创建一个函数,在Python中每次迭代获得变量

时间:2015-06-14 17:20:44

标签: python recursion

我想创建一个函数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)这样的迭代,但我没有设法以一种简单的方式做到这一点......

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您不需要递归。您可以简单地定义一个函数,它接受任意数量的参数:

def f(t, *a):
    return sum(exp(x * t) for x in a)