好的,我會先說這是一個hw問題。話雖如此,我並沒有在尋找答案,只是答案的一些方向。計算球拍中的一個系列
我得計算一系列高達n
。我最初的想法是使用遞歸,並做類似以下的事情
(define (series-b n)
(if (= n -1) 0 ; Not sure how to handle this
(+ (/ (expt -1 n) (factorial n)) (series-b (sub1 n)))
)
)
這似乎是這樣做的方式。但是,我不太確定如何處理-1情況,這是拋出我的預期的答案。提前致謝。
編輯
我確實有一些測試用例,並有如下幾點
n = 0: 1
n = 1: 1/2
n = 2: 2/3
n = 3: 5/8
n = 4: 19/30
n = 5: 91/144
我不能完全肯定這系列是兩種。
編輯2
我選擇soegaard的答案,但是,我沒有做一個小改動,最終的解決方案,這就是:
(define (series-b n)
(for/sum ([i (+ n 1)])
(/ (expt -1 i)
(factorial (+ i 1))))
)
接受的答案使用(factorial i)
而非(factorial (+ i 1))
。我還不熟悉for/sum
,但這是處理這個問題的一個非常好的方法,所以謝謝!
變化'(= N-1)''到(= N 0)',你會得到預期的結果。 – soegaard
@soegaard如果要將基本情況測試從-1更改爲0,他們還必須將基本情況更改爲1 ;-) –
好點。錯過了。 – soegaard