• java 实现阶乘 三种方法


    用三种方法来实现n!实现使用BigDecimal类,因为用int最多正确算到12!,用long最多正确算到20!.废话不多说,直接上代码:

    //第一种方法:

    Java代码

    1. 1.package Factorial;   
    2. 2.  
    3. 3.import java.math.BigDecimal;   
    4. 4.import java.util.Scanner;   
    5. 5.public class Factorial1 {   
    6. 6.    public static BigDecimal factorial(int n){   
    7. 7.        BigDecimal result = new BigDecimal(1);   
    8. 8.        BigDecimal a;   
    9. 9.        for(int i = 2; i <= n; i++){   
    10. 10.            a = new BigDecimal(i);   
    11. 11.            result = result.multiply(a);   
    12. 12.        }   
    13. 13.        return result;   
    14. 14.    }   
    15. 15.      
    16. 16.    public static void main(String[] arguments){   
    17. 17.        Scanner sc = new Scanner(System.in);   
    18. 18.        int a = sc.nextInt();   
    19. 19.        System.out.println(a + "!=" + factorial(a));   
    20. 20.    }   
    21. 21.  
    22. 22.}  
    23. package Factorial;

    24. import java.math.BigDecimal;
    25. import java.util.Scanner;
    26. public class Factorial1 {
    27.         public static BigDecimal factorial(int n){
    28.                 BigDecimal result = new BigDecimal(1);
    29.                 BigDecimal a;
    30.                 for(int i = 2; i <= n; i++){
    31.                         a = new BigDecimal(i);
    32.                         result = result.multiply(a);
    33.                 }
    34.                 return result;
    35.         }
    36.        
    37.         public static void main(String[] arguments){
    38.                 Scanner sc = new Scanner(System.in);
    39.                 int a = sc.nextInt();
    40.                 System.out.println(a + "!=" + factorial(a));
    41.         }

    42. }
    复制代码

    第二种方法:





    Java代码

    1. 1.//第二种方法   
    2. 2.package Factorial;   
    3. 3.  
    4. 4.import java.math.BigDecimal;   
    5. 5.import java.util.Scanner;   
    6. 6.public class Factorial3 {   
    7. 7.    public static BigDecimal factorial(BigDecimal n){   
    8. 8.        BigDecimal bd1 = new BigDecimal(1);   
    9. 9.        BigDecimal bd2 = new BigDecimal(2);   
    10. 10.        BigDecimal result = bd1;   
    11. 11.        while(n.compareTo(bd1) > 0){   
    12. 12.            result = result.multiply(n.multiply(n.subtract(bd1)));   
    13. 13.            n = n.subtract(bd2);   
    14. 14.        }   
    15. 15.        return result;   
    16. 16.    }   
    17. 17.    public static void main(String[] arguments){   
    18. 18.        Scanner sc = new Scanner(System.in);   
    19. 19.        BigDecimal  n = sc.nextBigDecimal();   
    20. 20.           
    21. 21.        System.out.print(n + "!=" + factorial(n));   
    22. 22.    }   
    23. 23.  
    24. 24.}  

    //第二种方法

    1. package Factorial;

    2. import java.math.BigDecimal;
    3. import java.util.Scanner;
    4. public class Factorial3 {
    5.         public static BigDecimal factorial(BigDecimal n){
    6.                 BigDecimal bd1 = new BigDecimal(1);
    7.                 BigDecimal bd2 = new BigDecimal(2);
    8.                 BigDecimal result = bd1;
    9.                 while(n.compareTo(bd1) > 0){
    10.                         result = result.multiply(n.multiply(n.subtract(bd1)));
    11.                         n = n.subtract(bd2);
    12.                 }
    13.                 return result;
    14.         }
    15.         public static void main(String[] arguments){
    16.                 Scanner sc = new Scanner(System.in);
    17.                 BigDecimal  n = sc.nextBigDecimal();
    18.                
    19.                 System.out.print(n + "!=" + factorial(n));
    20.         }

    21. }

    第三种方法,用递归实现:

    Java代码

      1. 1.package Factorial;   
      2. 2.  
      3. 3.import java.util.Scanner;   
      4. 4.import java.math.BigDecimal;   
      5. 5.public class Factorial2 {   
      6. 6.    public static BigDecimal factorial(BigDecimal n){   
      7. 7.        BigDecimal bd1 = new BigDecimal(1);   
      8. 8.        if(n.equals(new BigDecimal(1))){   
      9. 9.            return bd1;   
      10. 10.        }   
      11. 11.        else  
      12. 12.            return n.multiply(factorial(n.subtract(bd1)));   
      13. 13.    }   
      14. 14.    public static void main(String[] arguments){   
      15. 15.        Scanner sc = new Scanner(System.in);   
      16. 16.        BigDecimal a = sc.nextBigDecimal();   
      17. 17.        BigDecimal result = factorial(a);      
      18. 18.        System.out.println(a + "!=" +result);   
      19. 19.           
      20. 20.    }   
      21. 21.  
      22. 22.} 
  • 相关阅读:
    生活
    Jupyter notebook修改默认文件夹\默认路径(亲测有效)
    k8s的service及相关知识
    sql count()加distinct和条件去重统计
    为什么使用Nuxt.js?
    注解(Annotation)
    Servlet
    Java反射
    Cookie
    Spring配置文件
  • 原文地址:https://www.cnblogs.com/yanran/p/5728312.html
Copyright © 2020-2023  润新知