我今天开始学习 OCaml。我已经知道 Scheme,所以我认为尝试将一些示例 Scheme 程序转换为 ML 会很好。我在下面有一些代码用于计算欧拉数,它有效,但在 OCaml 中不起作用。我收到此错误:Exception: Division_by_zero.
我认为这可能是在某处混合浮点数和整数的问题。我一直无法弄清楚如何使用ocamldebug
. 谁能确定我的错误发生在哪里?谢谢你。
(define (factorial n)
(if (zero? n) 1 (* n (factorial (sub1 n)))))
(define (find-e accuracy sum)
(if (zero? accuracy) (add1 sum)
(find-e (sub1 accuracy) (+ sum (/ 1 (factorial accuracy))))))
(display (format "~f" (find-e 100 0)))
let rec factorial n = if n == 0 then 1 else n * factorial (n - 1) ;;
let rec find_e accuracy sum =
if accuracy == 0
then (sum + 1)
else find_e (accuracy - 1) (sum + (1 / factorial accuracy)) ;;
let result = find_e 100 0 ;;