Java程序计算阶乘

时间:2020-01-09 10:35:27  来源:igfitidea点击:

在这篇文章中,我们将看到一个Java程序来查找数字的阶乘。

非负整数n的阶乘是所有小于或者等于n的正整数的乘积。

例如– 5! = 5 X 4 X 3 X 2 X 1 = 120

Java中的析因程序

Java中的析因程序既可以写为迭代解决方案,也可以写为递归解决方案。在这篇文章中,给出了两种解决方案。

使用迭代的阶乘程序

在迭代逻辑中,我们可以使用输入的数字启动for循环,并在每次迭代中将其减少1. 我们需要的是循环中所有数字的乘法。

import java.util.Scanner;

public class Factorial {
	public static void main(String[] args) {
		// Input from user
		Scanner input = new Scanner(System.in);
		System.out.println("Enter a number: ");
		int number = input.nextInt();
		int factorial = 1;
		for(int i = number; i >= 1; i--){
			factorial = factorial * i; 
		}
		System.out.println("Factorial of " + number + " is " + factorial); 
	}
}

输出:

Enter a number: 
5
Factorial of 5 is 120

Java中使用递归的阶乘程序

在编写阶乘Java程序的递归逻辑中,我们需要每次调用递归传递(number – 1)作为参数的相同方法,直到达到基本情况(number = 1)。

import java.util.Scanner;

public class Factorial {
	public static void main(String[] args) {
		// Input from user
		Scanner input = new Scanner(System.in);
		System.out.println("Enter a number: ");
		int number = input.nextInt();
		int factorial = calculateFactorial(number);

		System.out.println("Factorial of " + number + " is " + factorial); 
	}
	
	// Factorial using recursion
	private static int calculateFactorial(int num){
		// base case
		if(num == 1){
			return 1;
		}else{
			return num * calculateFactorial(num - 1);
		}
	}
}

输出:

Enter a number: 
8
Factorial of 8 is 40320