gpt4 book ai didi

emacs - elisp 阶乘计算给出错误结果

转载 作者:行者123 更新时间:2023-12-02 20:37:32 27 4
gpt4 key购买 nike

如果我在 emacs-lisp 中编写这个函数:

(defun factorial (n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
=> factorial

它适用于像 5 或 10 这样的小数字,但如果我尝试计算(阶乘 33),答案是 -1211487723752259584,这显然是错误的,所有大数字都会破坏该函数。在Python中这不会发生。是什么导致了这个问题?

最佳答案

在处理大数时,您始终可以调用 Emacs 的 calc 库。

(defun factorial (n)
(string-to-number (factorial--1 n)))

(defun factorial--1 (n)
(if (<= n 1)
"1"
(calc-eval (format "%s * %s"
(number-to-string n)
(factorial--1 (- n 1))))))


ELISP> (factorial 33)
8.683317618811886e+036

进一步阅读:

关于emacs - elisp 阶乘计算给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com