因子方法导致错误

Dus*_*usk 4 c# factorial

我试图得到数字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)

Jon*_*eet 6

当然 - 阶乘非常快,非常快.你四溢INT的界限非常迅速......在某些时候,你会用足够的因素相乘得到溢出为0,然后将保持值0到永远.

根据一个快速的谷歌搜索,66阶乘是5.44344939×10 92 - 这远远超过int可以处理,甚至longdecimal.你可以得到double它 - 你会失去很大的精度,而且这也会很快积累,但至少它不会溢出......