scheme - 使用do循环近似欧拉数(方案)
问题描述
我正在尝试使用 Scheme 中的 do 循环来计算和近似欧拉数
有些事情不太正确,因为没有显示任何内容。有人可以帮我找到下面代码的修复程序吗?谢谢。
(define (factorial n)
(cond
((= n 0)1)
((* n(factorial(- n 1))))))
; using a do loop, I want to calculate 1/0! + 1/1! + 2/2! + 3/3!...
(define (ei n)
(define sum 0)
(do ((i 0 (+ 1 i)))
((> i n))
(+ sum (/ 1.(factorial i)))))
(ei 6)
我预计数字接近 2.7
解决方案
您需要更新 sum 变量并返回其值:
(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)
这导致2.7180555555555554
.
推荐阅读
- java - Spring Security SAML 扩展,具有跨多个 tomcat webapps 的记住我功能
- javascript - MDN“实验”和 TC39 阶段之间是否有映射?
- ruby-on-rails - 尝试使用 ruby 发送批量电子邮件时出错
- api - 在颤动中从服务器获取图像到gridview
- rxjs - 如何根据第一个响应在 RxJS 中发出多个 Ajax 请求
- python - 从桌面路径显示图像
- python - 如何在 NetworkX 中读取语义图?
- mysql - 需要重命名一列中的数据,MySQL
- c++ - 如何测试注册表项是否存在?
- jmeter - Jmeter不发送名为Cookie的标头