跳到主要内容

Java 程序:使用递归计算数字的阶乘

要理解这个示例,你应该具备以下 Java 编程 主题的知识:

正数 n 的阶乘定义为:

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("6 的阶乘 = " + factorial);
}
public static long multiplyNumbers(int num)
{
if (num >= 1)
return num * multiplyNumbers(num - 1);
else
return 1;
}
}

输出

6 的阶乘 = 720

最初,main() 函数调用 multiplyNumbers() 方法,并传入 6 作为参数。

由于 6 大于或等于 1,6 被乘到 multiplyNumbers() 的结果上,其中传入了 5(num - 1)。由于它是在同一函数中调用的,所以这是一个递归调用。

在每次递归调用中,参数 num 的值逐渐减少 1,直到 num 小于 1。

num 的值小于 1 时,就不再进行递归调用。

并且每次递归调用都返回以下结果:

6 * 5 * 4 * 3 * 2 * 1 * 10 的情况)= 720