我用一种编译语言运行了一个简单的程序,计算自然数的阶乘,使用两个简单的循环,一个外部循环来跟踪我们正在计算阶乘的数字,一个内部循环来通过将从1到该数字本身的每个自然数相乘来计算阶乘。该程序对于前几个自然数的阶乘计算完美无误,但是从第13个值开始,计算出的阶乘明显错误。这是由于现代计算机实现的整数算术,我可以理解为什么会出现负值。
不过,我不明白的是,为什么,在不断测试的不同计算机上,只计算了很少的阶乘之后,总是会出现数字零。当然,如果第n个阶乘被评估为0,则(n + 1) -th阶乘也将被评估为0,依此类推,但为什么在很少的阶乘计算后总是出现数字0?
编辑:您可能想知道为什么我使用了两个不同的循环而不是只有一个...我这样做是为了强制计算机从头开始重新计算每个阶乘,以测试确实阶乘始终变为0而不是偶然发生。
以下是我的输出:
不过,我不明白的是,为什么,在不断测试的不同计算机上,只计算了很少的阶乘之后,总是会出现数字零。当然,如果第n个阶乘被评估为0,则(n + 1) -th阶乘也将被评估为0,依此类推,但为什么在很少的阶乘计算后总是出现数字0?
编辑:您可能想知道为什么我使用了两个不同的循环而不是只有一个...我这样做是为了强制计算机从头开始重新计算每个阶乘,以测试确实阶乘始终变为0而不是偶然发生。
以下是我的输出: