正数 n 的阶乘由下式给出:
factorial of n (n!) = 1 * 2 * 3 * 4 * ... * n
负数的阶乘不存在。而 0 的阶乘是 1、
在此示例中,您将学习使用递归查找数字的阶乘。访问此页面以了解如何找到 使用循环对数字进行阶乘。。 >
示例: 使用递归的数的因式分解
public class Factorial { public static void main(String[] args) { int num = 6; long factorial = multiplyNumbers(num); System.out.println("Factorial of " + num + " = " + factorial); } public static long multiplyNumbers(int num) { if (num >= 1) return num * multiplyNumbers(num-1); else return 1; } }
输出
Factorial of 6 = 720
最初,从
main()
函数调用
multiplyNumbers()
,并以 6 作为参数传递。
由于 6 大于或等于 1,所以 6 与
multiplyNumbers()
的结果相乘,其中传递 5(num-1)。因为它是从同一个函数调用的,所以它是一个递归调用。
在每次递归调用中,参数
num 的值减 1,直到
num 小于 1、
当
num的值小于1时,没有递归调用。
每个递归调用都会返回给我们:
6 * 5 * 4 * 3 * 2 * 1 * 1 (for 0) = 720