package com.zf.s2;//创建一个包

import java.math.BigInteger;//导入类

import java.util.ArrayList;

import java.util.List;

public class TextFactorial {//操作计算阶乘的类

public static int simpleCircle(int num){//简单的循环计算的阶乘

int sum=1;

if(num<0){//判断传入数是否为负数

throw new IllegalArgumentException("必须为正整数!");//抛出不合理参数异常

}

for(int i=1;i<=num;i++){//循环num

sum *= i;//每循环一次进行乘法运算

}

return sum;//返回阶乘的值

}

public static int recursion(int num){//利用递归计算阶乘

int sum=1;

if(num < 0)

throw new IllegalArgumentException("必须为正整数!");//抛出不合理参数异常

if(num==1){

return 1;//根据条件,跳出循环

}else{

sum=num * recursion(num-1);//运用递归计算

return sum;

}

}

public static long addArray(int num){//数组添加计算阶乘

long[]arr=new long[21];//创建数组

arr[0]=1;

int last=0;

if(num>=arr.length){

throw new IllegalArgumentException("传入的值太大");//抛出传入的数太大异常

}

if(num < 0)

throw new IllegalArgumentException("必须为正整数!");//抛出不合理参数异常

while(last

arr[last+1]=arr[last]*(last+1);//进行运算

last++;//last先进行运算,再将last的值加1

}

return arr[num];

}

public static synchronized BigInteger bigNumber(int num){//利用BigInteger类计算阶乘

ArrayList list = new ArrayList();//创建集合数组

list.add(BigInteger.valueOf(1));//往数组里添加一个数值

for (int i = list.size(); i <= num; i++) {

BigInteger lastfact = (BigInteger) list.get(i - 1);//获得第一个元素

BigInteger nextfact = lastfact.multiply(BigInteger.valueOf(i));//获得下一个数组

list.add(nextfact);

}

return (BigInteger) list.get(num);//返回数组中的下标为num的值

}

public static void main(String []args){//java程序的主入口处

int num=5;

int num1=23;

System.out.println("简单的循环计算"+num+"的阶乘为"//调用simpleCircle

+simpleCircle(num));

System.out.println("利用递归计算"+num+"的阶乘为"//调用recursion

+recursion(num));

System.out.println("数组添加计算"+num+"的阶乘为"//调用addArray

+addArray(num));

System.out.println("利用BigInteger类计算"+num1+"的阶乘为"//调用bigNumber

+bigNumber(num1));

}

}

阶乘的计算java_java中四种阶乘的计算相关推荐

  1. 电子计算机机房折旧提几年,IDC设备资产运营中四种“折旧率计算”的常见方法...

    原标题:IDC设备资产运营中四种"折旧率计算"的常见方法 数据中心基础设施设备管理中设备的折旧是固定资产的折旧.该基础设施设备或者IT设备在长期使用后仍可保持其原始物理形态,但由于 ...

  2. Java中四种XML解析技术之不完全测试

    Java中四种XML解析技术之不完全测试 <script language=javascript src=""></script> 在平时工作中,难免会遇到 ...

  3. 并行:四种C+OpenMP计算π的并行程序

    四种C+OpenMP计算π的并行程序 VS2017中OpenMP配置 计算π的串行程序 计算π的并行程序 1.并行域并行化 2.共享任务结构并行化 3.private字句和critical制导语句并行 ...

  4. 【算法】计算组合数的四种常用方法

    [算法]计算组合数的四种常用方法 算法一:Cab=Ca−1b−1+Ca−1bC_{a}^{b}=C_{a-1}^{b-1}+C_{a-1}^{b}Cab​=Ca−1b−1​+Ca−1b​ 解析: Ca ...

  5. Android中四种补间动画的使用示例(附代码下载)

    场景 Android中四种补间动画. 透明度渐变动画 旋转动画 缩放动画 平移动画 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的 ...

  6. JavaScript中四种不同的属性检测方式比较

    JavaScript中四种不同的属性检测方式比较 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //fa ...

  7. C++中四种 cast 转换

    四种 cast 转换 C++中四种类型转换是:static_cast, dynamic_cast, const_cast, reinterpret_cast const_cast static_cas ...

  8. java乘法表_Java中四种9*9乘法表的实现方式(附代码)

    前言: 初学java,实现99乘法表是必学必会的内容. 需求 : 分别写出上下左右,对应四个角的乘法表. 思路: 可以先打印出*星星,形成一个直角三角形,然后再替换成乘法公式. 代码如下: publi ...

  9. java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)

    java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式详解与比较(转) http://wishlife.javaeye.com/blog/181865 posted on 2010-12 ...

最新文章

  1. 第二十二讲 延迟定理
  2. 01.query的分类-条件查询和组合查询
  3. 汇编的艺术(01)sizeof operator
  4. T-1-java语言基础
  5. php中join用法,PHP join()函数用法与实例讲解
  6. 【SpringCloud】Spring cloud Alibaba Sentinel 规则持久化
  7. 3dmax导出obj序列_Houdini导出序列图片
  8. linux 脚本做成服务,Shell脚本注册到Linux系统服务实例
  9. 利用VX助手增加编程效率
  10. TimesTen数据库使用之点滴(1)
  11. chrome浏览器控制台执行js脚本
  12. 罗马数字转化为阿拉伯数字
  13. WIN10家庭版虚拟机启动蓝屏问题
  14. 使用svn报错之An error occurred while contacting the repository
  15. 用MySQL模拟消息队列
  16. 内存延时cl_内存频率和CL延迟哪个重要[解答]
  17. Vscode开发STM32单片机程序
  18. 新手怎么重装系统?只需3步看完小白也会装!
  19. 诺贝尔奖大数据告诉你:最聪明的星座是谁
  20. ocp考题解析create user

热门文章

  1. 用MATLAB编程正弦稳态相量图,matlab课程设计--利用MATLAB对线性电路正弦稳态特性分析...
  2. R语言多层桑基图_桑基图的绘制核心微生物组分类学及丰度展示
  3. 三相pmsm矢量控制仿真模型_学术|基于新型滑模观测器的永磁同步电机无传感器矢量控制系统...
  4. console修改 ajax,【快速】chrome中console下ajax访问后台
  5. 用shell获取mysql主从状态_shell监控MySQL主从状态脚本两则
  6. linux定时器回调处理过程,Linux内核系统定时器TIMER实现过程分析
  7. python字符串基本操作-Python 基本字符串操作
  8. 做程序员如何防止被裁员?我们既要干好主业,也要发展好副业,跟这些公众号大佬们向上生长...
  9. 讲真,做Python一定不要只会一个方向!
  10. 机器手六维坐标怎么定义_工业机器人十万个怎么办-不清楚机器人各坐标系含义怎么办?...