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;

}

}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【Redis】Redis4.0、5.0、6.0版本特性整理「建议收藏」

    【Redis】Redis4.0、5.0、6.0版本特性整理「建议收藏」文章目录Redis版本特性Redis4模块系统PSYNC2.0缓存驱逐策略优化LazyFree交换数据库混合持久化内存命令兼容NAT和DockerActiveDefrag其他Redis5Stream类型新的Redis模块API集群管理器更改Lua改进RDB格式变化动态HZZPOPMIN&ZPOPMAX命令CLIENT新增命令其他Redis6多线程IOSSL支持ACL支持RESP3客户端缓存集群代理Disquemodule其他Redis版本特性Redis4模块系统​ R

  • php unserialize 返回false的解决方法

    php unserialize 返回false的解决方法

  • iocomp控件 iocomp控件新版Crack[通俗易懂]

    iocomp控件 iocomp控件新版Crack[通俗易懂]Iocomp’sActiveX/VCLUltraPackisasuiteof63controlswrittenforuseincreatingprofessionalinstrumentationapplicationsusingActiveXorVCLdevelopmentenvironments.CombinesourProPack&PlotPack.578867473Thesecontrolscanbeusedfor

  • ubuntu安装pip3一直失败的解决方法

    ubuntu安装pip3一直失败的解决方法ubuntu安装pip3一直失败的解决方法在Ubuntu系统中,有时候因为依赖环境等一系列问题,会导致安装pip3一直提示缺各种各样的东西,一直安装失败,下面提供一种可行的解决方法。首先cd到一个想下载到的文件夹,然后wgethttps://bootstrap.pypa.io/get-pip.py下载完成之后,使用我们需要安装pip的python环境进行执行:sudopython3…

    2022年10月23日
  • NOIP2012 借教室[通俗易懂]

    NOIP2012 借教室[通俗易懂]2借教室题目描述在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我们自然希望编程解决这个问题。 我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借。共有m份订单,每份订单用三个正整数描述,分别为dj,sj,tj,表示某租借

  • java新手代码大全实例,深度解析,值得收藏

    java新手代码大全实例,深度解析,值得收藏策略1——停止挖掘LawofHoles是说当自己进洞就应该停止挖掘。对于单体式应用不可管理时这是最佳建议。换句话说,应该停止让单体式应用继续变大,也就是说当开发新功能时不应该为旧单体应用添加新代码,最佳方法应该是将新功能开发成独立微服务。如下图所示:除了新服务和传统应用,还有两个模块,其一是请求路由器,负责处理入口(http)请求,有点像之前提到的API网关。路由器将新功能请求发送给新开发的服务,而将传统请求还发给单体式应用。另外一个是胶水代码(gluecode),将微服务和单体应用集

发表回复

您的电子邮箱地址不会被公开。

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