階乘是組合數學中一個常見的數學運算,指從一組連續的正整數中取出一個數,然后與所有比它小的正整數連乘到1。比如5的階乘為5 × 4 × 3 × 2 × 1 = 120。
在Java編程中,我們可以使用遞歸和迭代兩種方式來實現階乘運算。下面分別給出兩種實現方式的代碼示例:
使用遞歸求階乘
public class Factorial { public static long recursiveFactorial(long n) { if (n == 0 || n == 1) { return 1; } return n * recursiveFactorial(n - 1); } }
上面的代碼中,recursiveFactorial() 方法使用了遞歸實現,當 n 為0或1時,直接返回1;否則將 n 乘上遞歸調用 recursiveFactorial(n - 1) 的結果。
使用迭代求階乘
public class Factorial { public static long iterativeFactorial(long n) { if (n == 0 || n == 1) { return 1; } long result = 1; for (long i = 1; i<= n; i++) { result *= i; } return result; } }
上面的代碼中,iterativeFactorial() 方法使用了迭代實現,當 n 為0或1時,直接返回1;否則使用 for 循環將1到n的所有正整數連乘。
無論使用遞歸還是迭代,都需要注意對變量類型的選擇,防止溢出。另外,當 n 過大時,遞歸深度過深可能會導致棧溢出。