2014-02-05 45 views
0
def fold2(op, term, a, next, b, base): 
    if a > b: 
     return base 
    else: 
     return op (term(a), fold2(op, term, next(a), next, b, base)) 



def geometric_series(a, r, n): 
    return fold2(lambda x,y: x+y, lambda x: a*(r**(n-1)), 1, lambda n: n+1, n, a) 

有人可以幫助我使用此代碼。這是假設給幾何系列,但我只允許更改零件def geometric_series(a,r,n)。它出什麼問題了?python中的幾何系列調試

一個)geometric_series(1/2,1/2,3)= 0.875(正確)

B)geometric_series(1,2,4)= 33(錯誤的)正確的答案是15

+0

這個程序有什麼問題? – thefourtheye

+0

我在示例中添加了 – user3234828

回答

0

有一個在你的代碼的第二拉姆達一個錯誤:

lambda x: a*(r**(n-1)) 

我覺得nx實際上應該是相同的變量在這裏:

lambda t: a*(r**(t-1)) 

除此之外,我將fold2的第三個參數從1更改爲2,並且所有內容都按預期工作。

+0

感謝您的幫助! :D – user3234828

+0

如果這個答案是正確的,請將它標記爲^^ – themantalope

0

fold2的第三個參數應該有相同的變量。既可以是n也可以都是x。此外,你最終的說法,這是基礎的情況下,應該是0

0

只需添加上,基本應該是0,而不是一個,如果不是你的測試用例將有額外1

高清geometric_series (a,r,n): 返回fold2(lambda x,y:x + y,lambda n:a *(r **(n-1)),1,lambda n:n + 1,n,0)