Math 方案/方案编号

Math 方案/方案编号,math,functional-programming,scheme,racket,eulers-number,Math,Functional Programming,Scheme,Racket,Eulers Number,我试图在drracket-aka方案中实现一个Euler数。 我通过搜索函数看到了一个解决方案,但这是一种复杂的方法 (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 )) (

我试图在drracket-aka方案中实现一个Euler数。 我通过搜索函数看到了一个解决方案,但这是一种复杂的方法

 (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函数。 结果有点不正确

侧注您应该在问题中提供更多细节,例如输入和实际输出(通常是预期输出,但在这种情况下是很清楚的)

我想问题出在线路上

[(= n 1) 2.72]
我不知道你是从哪里得到这条线的。我唯一的猜测是,这是基于某种近似方法的其他实现的遗留问题
e
约为
2.718…
因此
2.72
单独大于正确答案,您将在其上再添加一些
1/n

如果删除该行,代码似乎可以正常工作,如您所见

侧注您应该在问题中提供更多细节,例如输入和实际输出(通常是预期输出,但在这种情况下,它有点清晰)

我想问题出在线路上

[(= n 1) 2.72]
我不知道你是从哪里得到这条线的。我唯一的猜测是,这是基于某种近似方法的其他实现的遗留问题
e
约为
2.718…
因此
2.72
单独大于正确答案,您将在其上再添加一些
1/n


如果删除该行,代码似乎可以正常工作,如您所见

非常感谢您的回答。因此,我尝试了(e1)的版本并对其进行了评估。结果是两个。我也试过(E3),但结果仍然不是预期的结果。你能告诉我你有什么作为输入,结果是2。71@AzadKygn,我想第一个问题是:你理解这段代码背后的算法吗?为什么它有
n
作为参数?是的,谢谢你,这是一个愚蠢的问题@SergGr。n越高,我们的e号就越精确,因为它是一个永无止境的数字row@AzadKygn,我很高兴你解决了这个问题。我认为现在也应该很清楚为什么这一行是最初bug的来源。顺便说一句,如果某个答案对你有帮助,你通常会接受这个答案。非常感谢你的回答。因此,我尝试了(e1)的版本并对其进行了评估。结果是两个。我也试过(E3),但结果仍然不是预期的结果。你能告诉我你有什么作为输入,结果是2。71@AzadKygn,我想第一个问题是:你理解这段代码背后的算法吗?为什么它有
n
作为参数?是的,谢谢你,这是一个愚蠢的问题@SergGr。n越高,我们的e号就越精确,因为它是一个永无止境的数字row@AzadKygn,我很高兴你解决了这个问题。我认为现在也应该很清楚为什么这一行是最初bug的来源。顺便说一句,如果某个答案对你有帮助,你通常会接受这个答案。