在方案中写入一个递归函数来计算欧拉数 e



>在方案中写一个递归函数er,和一个非递归(基于do-loop(函数ei,它们以分量n的数量作为它们的参数,并计算以下总和(e的近似值(1 + 1/1! + 1/2! + 1/3! + ... + 1/n!, n>0

我有一个解决方案给你。 希望对您有所帮助!

((lambda (s) (s s -1 1 0))
 (lambda (hep M f! euler-number)
   ((lambda (s)
      (if (= M 20)
          (+ 0.0 euler-number)
          (s s 1 1 (+ euler-number (/ 1 f!)))))
    (lambda (hop N x! euler)
      (hep hop (+ N 1) (* x! N) euler)))))

你要做的第一件事是计算阶乘,因为你将需要在for循环中的需求。然后,在 for 循环中,您必须调用阶乘函数,请参阅如何使用 for 循环而不是递归来执行此操作。下面帖子的最后一行是如何测试函数,它应该返回 6 阶乘的正确数字。

(define (factorial n)
      (cond
        ((= n 0) 1)
        ((* n (factorial (- n 1)))))) 
    (define (ei n)
      (define sum 0)
      (do ((i 0 (+ 1 i)))
         ((> i n))
         (set! sum (+ sum (/ 1. (factorial i)))))
      sum)

;(ei 6(

最新更新