我花了一些时间在这里和整个互联网上查看有关这个问题的问题,但我真的找不到任何对我有意义的东西。基本上,我需要帮助在方案中实现一个函数,当你给它一个值k时,它会计算莱布尼茨公式的值。你输入的值让函数知道它应该计算级数中的多少值。这就是我到目前为止所拥有的,我不确定我需要用什么方式来编写这个程序才能让它工作。谢谢!
(define (fin-alt-series k)
  (cond ((= k 1)4)
        ((> k 1)(+ (/ (expt -1 k) (+(* 2.0 k) 1.0)) (fin-alt-series (- k 1.0))))))发布于 2016-09-19 10:44:01
基本大小写不正确。我们可以稍微清理一下代码:
(define (fin-alt-series k)
  (cond ((= k 0) 1)
        (else
         (+ (/ (expt -1.0 k)
               (+ (* 2 k) 1))
            (fin-alt-series (- k 1))))))更好的是,我们可以重写过程来使用尾递归,这样会更快:
(define (fin-alt-series k)
  (let loop ((k k) (sum 0))
    (if (< k 0)
        sum
        (loop (- k 1)
              (+ sum (/ (expt -1.0 k) (+ (* 2 k) 1)))))))例如:
(fin-alt-series 1000000)
=> 0.7853984133971936
(/ pi 4)
=> 0.7853981633974483https://stackoverflow.com/questions/39564210
复制相似问题