怎样用C++求12以上的阶乘

来源:百度知道 编辑:UC知道 时间:2024/06/08 14:23:18
还是不可以,我是想求很大的数的阶乘。50!等等

我觉得即便是long也不能解决你的问题,这个要用到高精度来解决。所谓高精度,简单来说就是把你的结果折成几段存于一个数组中,并且在计算的时候维护数组的变化。
这个要克服的问题主要是你的数据类型(不管是long还是int等等)都是有限长度的,无法表示超出这个长度的数。你要做的就是模拟计算机维护数据,处理好相乘、进位等等操作。
俺也没实际写过这类的程序,主要就是因为处理的数据通常没那么大。你可以自己试试吧,这个貌似应该不是很难。

把那个阶乘的累积数定义为LONG型

1、当阶乘基数超过13时,C/C++中的数据类型long将无法容纳阶乘计算结果,因此需要设计一个数据结构来记录它,比如字符数组。
2、每次进行乘法运算时,转换为对字符数组中每个元素的乘法运算,并控制进位、元素移位等操作。
3、优化每次运算的算法,提高运算效率。因为,当阶乘基数变的很大时,计算耗时将变的另人无法忍受,呵呵。

模拟运算