在我们面试时通常会遇到阶乘的公式问题当然最简单的就是运用递归,循环所求的阶乘数:
当我们到13的阶乘时则会计算不出,这时我们可以把int类型转换成long类型但是,当计算到很大的数字时也会运行异常。
这时我们需要转换一下思维。这里运用采用 “数组进位” 算法在超越计算机变量取值范围嘚情况下,将多位数相乘转化为一位数相乘如11!=,若需求12的阶乘则需要将与12相乘,可利用乘法分配率乘法竖式如下图所示:
理论上講,只要计算机内存空间允许就可以保存任意多位的阶乘结果不再受变量的取值范围的限制,只受到操作系统的寻址能力和计算机内存嘚限制如果要求的阶乘数字很大则可以将数组定义为 long 类型,以避免在计算单位数的乘积时出现溢出的情况不多说了,上代码:此处计算的100000的阶乘(当然可以修改成其他数字)