2015-06-14 20 views
-1

我想創建一個函數foo(),它將輸出另一個函數。這個輸出函數是指數(或其他)與每次自由參數之和的總和。這個輸出函數應該具有所有的參數,加上一個自由變量。以遞歸方式創建一個函數在Python中每次迭代獲得變量

例子:

調用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

你不需要遞歸。您可以簡單地定義一個函數,該函數需要任意數量的參數:

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