如果我尝试在Chicken方案(带有数字扩展名)和Clisp中计算表达式(expt 123456 123456),则需要相当长的时间(Clisp中的时间更长)。
所以我认为计算表达式(/ (expt 123456 123456) (expt 123456 123456))至少需要两倍的时间,因为解释器必须计算两倍的幂函数,然后必须计算一个除法。
但是,令人惊讶的是,两位口译员的答案几乎都是瞬间出来的怎么回事?怎么可能呢确切地说,这个表达式是如何计算的?

最佳答案

提高到幂是一个相对快速的操作,即使使用大整数(它需要对数时间,不包括大整数运算的成本)但打印一个数字是一个相对缓慢的操作(它需要二次方时间)因此,在第一个打印问题中,结果需要很长时间在你的第二个问题中,结果是1,所以计算的时间很快在我的电脑上,第一个问题花了不到2秒的时间,然后花了几秒打印结果,第二个问题花了不到两倍的时间,然后立即打印1。

关于math - Lisp中的算术,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31974240/

10-12 07:18