正数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()
函数以6作为参数传递来调用multiplyNumbers()
。
由于6大于或等于1,因此multiplyNumbers()
6与multiplyNumbers()
5(数字-1)的multiplyNumbers()
的结果multiplyNumbers()
。由于是从同一函数的,因此它是递归调用。
在每次递归调用,参数的值n UM由1比1降低直至达到NUM少。
当num的值小于1时,将没有递归调用。
每个递归调用都会返回给我们:
6 * 5 * 4 * 3 * 2 * 1 * 1 (for 0) = 720