如何通过适当的错误处理在C++中实现阶乘函数?

Jon*_*len 1 c++

之前我问过这个问题,但那些不理解这个问题的人却关闭了.我不是只寻找一个循环,我正在寻找你如何为生产代码做这些事情,如参数和溢出的错误处理.

请不要只说"使用库X",除非您可以链接到所述库的代码,它实际上解决了这些问题.

pic*_*c11 9

使用表查找.你不需要大表,因为factorial会很快溢出64位双精度变量范围.您只需要存储从0到170的参数值的函数值.超出该范围的任何内容都应该生成错误.


Jam*_*lis 6

这取决于输入的域.

如果您使用的是32位或64位整数,则根本不应使用循环:只需使用查找表.有没有很多n的这n!是由64位整数表示的.使用查找表,检查溢出很容易:如果n查找表中没有条目,则显然超出范围.

如果输入大于那个,那么你可能会使用某种"大整数"类,溢出不太可能是一个问题.