我试图得到数字66的阶乘值,但我的方法导致输出0.但每当我试图得到5的阶乘,它就会产生120输出.谁能告诉我为什么?
public static int factorial(int n)
{
if (n == 1)
return n;
return n * factorial(n - 1);
}
Run Code Online (Sandbox Code Playgroud)
当然 - 阶乘非常快,非常快.你四溢INT的界限非常迅速......在某些时候,你会用足够的因素相乘得到溢出为0,然后将保持值0到永远.
根据一个快速的谷歌搜索,66阶乘是5.44344939×10 92 - 这远远超过int可以处理,甚至long或decimal.你可以得到double它 - 你会失去很大的精度,而且这也会很快积累,但至少它不会溢出......
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |