【发布时间】:2017-09-08 05:54:01
【问题描述】:
我用一种编译语言运行了一个简单的程序,它使用两个简单的循环计算前几个自然数的阶乘,一个外部循环用于跟踪我们正在计算阶乘的数字,而一个内部循环用于计算通过乘以从 1 到数字本身的每个自然数的阶乘。 该程序对第一个自然数非常有效,然后大约从第 13 个值开始计算的阶乘显然是错误的。这是由于现代计算机中实现的整数运算,我不明白为什么会出现负值。 我不明白为什么,这是我在不同的计算机上测试过的,经过非常少量的阶乘计算后,它总是达到零。当然,如果第 n 个阶乘被评估为 0,那么第 (n+1) 个阶乘也将被评估为 0,以此类推,但是为什么数字 0 总是出现在极少数的阶乘计算?
编辑:您可能想知道为什么我使用两个不同的循环而不是一个循环...我这样做是为了强制计算机从一开始就重新计算每个阶乘,只是为了测试阶乘确实总是 0这不是偶然的。
这是我的输出:
【问题讨论】:
-
“一种编译语言”...是什么意思?您似乎知道术语,但您的“现代计算机”仍然存在整数溢出问题
-
请出示您的代码。
标签: algorithm factorial compiled-language