0

我正在尝试在 drracket aka Scheme 中实现欧拉数。我通过搜索功能看到了一个解决方案,但它很复杂。

 (define (fakultät n)
  (cond
    [(= n 0) 0]
    [(= n 1) 1]
    [else (* (fakultät (- n 1)) n)]))
(define (e n)
  (cond
    [(= n 0) 1]
    [(= n 1) 2.72]
    [else (+ (/ 1 (fakultät n )) (e(- n 1)))]))

首先我定义了一个阶乘,然后我定义了 e 函数。结果不知何故不正确

4

1 回答 1

3

旁注您确实应该在问题中提供更多详细信息,例如输入和实际输出是什么(通常是预期输出,但在这种情况下很清楚)

我认为错误在于

[(= n 1) 2.72]

我不确定你从哪里得到这条线。我唯一的猜测是,这是基于某种近似方法的其他一些实现的遗留物。e大约2.718...如此2.72单独大于正确答案,您将添加更多1/n!

如果您删除该行,代码似乎可以正常工作,如您在此处看到的

于 2018-03-13T16:56:08.973 回答