什么是数字阶乘?
- 非负整数n的阶乘,用n!表示。
- 阶乘是所有小于或等于n的正整数的乘积。
- 0!= 1
- 1!= 1
- 3!= 3 * 2 * 1 = 6
- 6!= 6 * 5 * 4 * 3 * 2 * 1 = 120
- n!= n * n – 1!= n * n – 1 * n – 2!等等
- 我们想使用Java中的递归和迭代算法查找给定数字的阶乘。
使用递归算法查找阶乘的算法
- 要计算阶乘的数字= 5。
- 我们知道0!= 1,我们的基本条件。
- 另外,我们知道n!= n * n – 1!= n * n – 1 * n – 2!等等
- 使用点3查找阶乘。
- 即阶乘(n)= n *阶乘(n-1)
- 阶乘(5)= 5 *阶乘(4)
- 5 * 4 *阶乘(3)。
- 5 * 4 * 3 *阶乘(2)。
- 5 * 4 * 3 * 2 *阶乘(1)= 120。
- 5 * 4 * 3 *阶乘(2)。
- 5 * 4 *阶乘(3)。
- 我们在图1中展示了递归算法的演示。
程序使用递归和迭代算法查找阶乘
import java.util.Scanner;
public class DemoFactorial {
private static int factRecursive(int number) {
// base condition
if (number == 1)
return 1;
// calculate the factorial of all number
return number * factRecursive(number - 1);
}
private static int factIterative(int number) {
int factorial = 1;
for (int iNumber = 1; iNumber <= number; iNumber++) {
factorial = factorial * iNumber;
}
return factorial;
}
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
/* Calculate factorial for input number */
System.out.printf(" Enter input number : ");
int number = scanner.nextInt();
int factNumber = factRecursive(number);
System.out.printf("factorial(%d) - Recursive method: %d\n", number, factNumber);
factNumber = factIterative(number);
System.out.printf("factorial(%d) - Iterative method: %d\n", number, factNumber);
}
}
}
|
输出:数字的阶乘-递归和迭代方法是:
Enter input number : 5
factorial(5) - Recursive method: 120
factorial(5) - Iterative method: 120
Enter input number : 7
factorial(7) - Recursive method: 5040
factorial(7) - Iterative method: 5040
|