好的,我会先说这是一个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