Java 程序:使用递归求一个数的阶乘

原文:https://www.studytonight.com/java-programs/java-program-to-find-the-factorial-of-a-number-using-recursion

在本教程中,我们将学习如何使用递归函数找到一个数的阶乘。递归函数是调用自身的函数。但是在继续之前,如果你不熟悉 java 中方法的基本概念,那么一定要查看主题为 java 中方法的文章。

输入:输入数字:5

输出:输入数字的阶乘为:120

程序 1:用递归求一个数的阶乘

在这个程序中,我们将使用带有用户定义值的递归找到一个数的阶乘。这里,我们将要求用户输入一个值,然后通过递归调用函数来计算阶乘。

算法

  1. 开始
  2. 声明一个变量来存储一个数字。
  3. 要求用户初始化数字。
  4. 检查是否可以计算阶乘。
  5. 如果数字大于等于 0,则调用递归函数来计算输入数字的阶乘。
  6. 如果数字小于 0,则打印无法计算阶乘的消息。
  7. 如果输入的数字是 0 或 1,则返回 1。
  8. 如果输入的数字不是 0 或 1,则通过递归调用相同的方法计算阶乘。
  9. 返回结果。
  10. 打印输入数字的阶乘。
  11. 停止

下面是相同的 Java 语言代码。

/*Java Program to find factorial of a number using Recursive Function*/
import java.util.Scanner;
public class Main
{
    //Driver Code
    public static void main(String[] args) 
    {
        //Take input from the user
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the number :");
        int num = sc.nextInt();   //Input the number
        if(num>=0) 
        {
           //Call a recursive function to find the factorial
           int factorial=findFactorial(num);
           System.out.println("The factorial of the entered the number is :"+factorial);
        }        
        else
        {
            System.out.println("Factorial not possible.");
            System.out.println("Please enter valid input.");
        } 
    }
    //Recursive Function to Find the Factorial of a Number
    public static int findFactorial(int num)
    {
        if(num==0)
        return 1;
        else if(num==1)
        return 1;
        else
        return num*findFactorial(num-1);        
    }
}

输入数字:10 输入数字的阶乘为:3628800

程序 2:用递归求一个数的阶乘

在这个程序中,我们将使用带有预定义值的递归找到一个数的阶乘。这里,要计算阶乘的数字已经在程序中给出,我们的任务是通过递归调用函数来计算阶乘。

算法

  1. 开始
  2. 声明一个变量来存储一个数字。
  3. 初始化数字。
  4. 检查是否可以计算阶乘。
  5. 如果数字大于等于 0,则调用递归函数来计算输入数字的阶乘。
  6. 如果数字小于 0,则打印无法计算阶乘的消息。
  7. 如果输入的数字是 0 或 1,则返回 1。
  8. 如果输入的数字不是 0 或 1,则通过递归调用相同的方法计算阶乘。
  9. 返回结果。
  10. 打印输入数字的阶乘。
  11. 停止

下面是相同的 Java 语言代码。

/*Java Program to find factorial of a number using Recursive Function*/
public class Main
{
    //Driver Code
    public static void main(String[] args) 
    {
        int num=5;
        System.out.println("The entered number is :"+num);
        if(num>=0) 
        {
           //Call a recursive function to find the factorial
           int factorial=findFactorial(num);
           System.out.println("The factorial of the entered number is :"+factorial);
        }
        else
        {
            System.out.println("Factorial not possible.");
            System.out.println("Please enter valid input.");
        } 
    }
    //Recursive Function to Find the Factorial of a Number
    public static int findFactorial(int num)
    {
        if(num==0)
        return 1;
        else if(num==1)
        return 1;
        else
        return num*findFactorial(num-1);        
    }
}

输入的数字是:5 输入的数字的阶乘是:120