java 阶乘算法_Java 实现阶乘算法

java 阶乘算法_Java 实现阶乘算法Java实现阶乘算法阶乘算法如下:以下列出0至20的阶乘:0!=1,(0的阶乘是存在的)1!=1,2!=2,3!=6,4!=24,5!=120,6!=720,7!=5040,8!=403209!=36288010!=362880011!=3991680012!=47900160013!=622702080014!=8717829120015!=130767436800016!=2092…

大家好,又见面了,我是你们的朋友全栈君。

Java 实现阶乘算法

阶乘算法如下:

以下列出 0 至 20 的阶乘:

0!=1,(0 的阶乘是存在的)

1!=1,

2!=2,

3!=6,

4!=24,

5!=120,

6!=720,

7!=5040,

8!=40320

9!=362880

10!=3628800

11!=39916800

12!=479001600

13!=6227020800

14!=87178291200

15!=1307674368000

16!=20922789888000

17!=355687428096000

18!=6402373705728000

19!=121645100408832000

20!=2432902008176640000

而当 n≥5 时,n!的个位数字都是0。

java代码实现

package com.leo.kang.interview;

import java.math.BigDecimal;

public class Factorial {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(“——–递归算法——-“);

System.out.println(factorialRecursive(20));

System.out.println(“——–循环算法——-“);

System.out.println(factorialLoop(25));

System.out.println(“——–BigDecimal算法——-“);

System.out.println(factorial(new BigDecimal(100)));

}

/**

* 递归实现阶乘算法

*

* @param n

* @return

*/

public static long factorialRecursive(int n) {

// 阶乘对整数才有意义

if (n < 0) {

return -1;

}

// 0!=1,(0 的阶乘是存在的)

if (n == 0) {

return 1;

}

if (n < 2)

return n * 1;

return n * factorialRecursive(n – 1);

}

/**

* 循环实现阶乘算法

* @param n

* @return

*/

public static long factorialLoop(int n) {

// 阶乘对整数才有意义

if (n < 0) {

return -1;

}

// 0!=1,(0 的阶乘是存在的)

if (n == 0) {

return 1;

}

// 初始值必须为1才有意义

long result = 1;

for (int i = n; i > 0; i–) {

result *= i;

}

return result;

}

public static BigDecimal factorial(BigDecimal n){

BigDecimal bd1 = new BigDecimal(1);//BigDecimal类型的1

BigDecimal bd2 = new BigDecimal(2);//BigDecimal类型的2

BigDecimal result = bd1;//结果集,初值取1

while(n.compareTo(bd1) > 0){//参数大于1,进入循环

result = result.multiply(n.multiply(n.subtract(bd1)));//实现result*(n*(n-1))

n = n.subtract(bd2);//n-2后继续

}

return result;

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163989.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月24日 上午7:36
下一篇 2022年7月24日 上午7:36


相关推荐

  • linux配置邮件服务器_shell发送邮件

    linux配置邮件服务器_shell发送邮件Linux发送邮件步骤一:安装sendmail软件查询是否有sendmail安装包yumsearchsendmail安装sendmail:yuminstall-ysendmail.x86_64步骤二:配置发件人信息1.开启smtp服务,并生成授权码2.在linux配置文件中填写发件人信息vi/etc/mail.rcsetfrom=86521760@qq.comsetsmtp=smtp://smtp.qq.com:587setsmtp-auth-user=8652

    2022年10月20日
    5
  • java lang illegalargument_java property

    java lang illegalargument_java propertyErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith’debug’enabled.2021-12-2922:52:35.557ERROR[cloud-payment-service,,,]13720—[restartedMain]o.s.b.d.LoggingFailureAnalysisReporter:************…

    2025年12月1日
    7
  • Python get-pip.py文件

    Python get-pip.py文件Pythonget pip py 文件做项目时发现 get pip py 这个文件比较难下载 将此文件分享给各位需要的人 文件来源 https bootstrap pypa io get pip py 如果链接打不开请至网盘自行下载 链接 https pan baidu com s 13rIiIcpaQpO 提取码 r2mb

    2026年3月18日
    2
  • 二分法 matlab应用,MATLAB算法の二分法[通俗易懂]

    从今起准备连续多期介绍一些常用的算法,通过不断实践“算法到程序”这一过程来学习matlab编程,久而久之就可做到熟能生巧。今天要介绍的是二分法,它是一种古老且经典的、蕴含深刻哲理的算法。我们知道现实物理世界是有限的,而抛开物理意义却又是无限可分的,而二分法就是基于这种无限可分思想,可以说它是连接有限与无限的纽带。今天主要介绍二分法在数学寻根中的应用,毕竟为的是将算法程序化。要求单调函数f(x)在区…

    2022年4月11日
    67
  • java数组初始化的方式_java数组初始化的三种方式

    java数组初始化的方式_java数组初始化的三种方式第一种方式 通过给定数组长度来赋值 publicstatic String args TODOAuto generatedmet 第一种方式 先指定数组长度 来给数组元素赋值 String str newString 4 str 0 k str 1 m str 2 o str 3 r S

    2026年3月18日
    2
  • 小爱音箱Pro接入豆包AI[项目代码]

    小爱音箱Pro接入豆包AI[项目代码]

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号