用Java实现阶乘的计算

Java入门练习

废话不多说,直接上代码。

import java.math.BigInteger;
import java.util.ArrayList;public class doFactorial {public static void main(String[] args) {int number=5;System.out.println("方法一算得"+number+"的阶乘为:"+Wayone(number));System.out.println("方法二算得"+number+"的阶乘为:"+Waytwo(number));System.out.println("方法三算得"+number+"的阶乘为:"+Waythree(number));System.out.println("方法四算得"+number+"的阶乘为:"+Wayfour(number));//方法四可以传入一个较大得number值}/*** 普通的循环方法求阶乘* @param num* @return*/public static int Wayone(int num) {int sum=1;if(num<0) {throw new IllegalArgumentException("需要计算的参数必须为正数!");//抛出不合理参数异常}for(int i=1;i<=num;i++) {sum*=i;}return sum;} /*** 运用递归算法求阶乘* @param num* @return*/public static int Waytwo(int num) {int sum=1;if(num<0) {throw new IllegalArgumentException("需要计算的参数必须为正数!");//抛出不合理参数异常}if(num==1) {return 1;//跳出循环}else {sum=num*Waytwo(num-1);//递归return sum;}}/*** 数组添加计算阶乘* @param num* @return*/public static long Waythree(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<num) {arr[last+1]=arr[last]*(last+1);last++;}return arr[num];}/*** 用BigInteger类计算阶乘* @param num* @return*/public static synchronized BigInteger Wayfour(int num) {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);}
}

如果有什么意见与建议,欢迎大家评论留言。

我是一名Java初学者,推荐大家一本学习资料,看了以后收获挺大的
链接:https://pan.baidu.com/s/1xYtkXyDqWJVM34vkjtIKHw
提取码:l1mv

Java实现阶乘的计算(四种方法)相关推荐

  1. 【Java】数组拷贝的四种方法

    四种方法 System.arraycopy() 这是一个native的方法,也是对大数组最高效的方法. Arrays.copyOf() 源码如下: public static <T> T[ ...

  2. Java实现回文数四种方法

    干货分享 | 打印回文数的四种方法!! 本文提供了四种方法来打印回文数,大家可以根据题目的要求(如:时间复杂度.运行时间.内存等限制条件)来选取合适的方法.如果题目要求打印的回文数较大,我们可以选择将 ...

  3. java中遍历HashMap的四种方法及效率比较

    1. 推荐方法: 使用entrySet 遍历Map 类集合KV,而不是keySet 方式进行遍历. 代码示例如下: // 循环第二种HashMap<Integer, String> map ...

  4. java中创建数组的四种方法

    详细方法见如下四部分代码块 方法一: 详情见注释 //创建数组的第一种方法int[] arr=new int[6]; //通过创建对象的方法来声明一个数组对象int intValue=arr[5]; ...

  5. JAVA中取整数的四种方法有哪些?面试篇(第五天)

    向下取整 Math.floor(),向下取整顾名思义就是取最小的整数,如1.9就返回值为1.0,-1.9就返回-2.0,返回的总是小于等于原数,如图. 向上取整 Math.ceil(),向上取整顾名思 ...

  6. Java遍历Map对象的四种方法

    在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...

  7. Java读取xml文件的四种方法

    xml文件: Xml代码 <?xml version="1.0" encoding="GB2312"?><RESULT><VALU ...

  8. java中Map遍历的四种方法

    在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历. 方法一:在for循环 ...

  9. java 从控制台输入/读取 四种方法 实现+原理

    先总结一下用法,后面是详细介绍: System.in 读取单个byte,可以读取ASCII码中的字符 InputStreamReader 读取单个\一串字符,这个字符可以是任意编码(并且可以指定编码方 ...

  10. Java并发-交替打印的四种方法。

    1 前言 如下图所示,现在有两个线程A,B:A打印12345,B打印abcde,结果为1a2b3c4d5e交替输出. 1.1 采用wait和notify [分析]我们要求线程A始终先打印,因此在线程B ...

最新文章

  1. IPython、python shell(command line)、pycharm,python,python IDLE的区别是什么?
  2. 从ODA看一体机的木桶理论
  3. mysql数据传输完整性_mysql – 处理数据库完整性
  4. java定时任务_ftp上传软件,ftp上传软件定时功能教程
  5. Flume架构以及应用介绍[转]
  6. 一分钟了解阿里云产品:企业级分布式应用服务EDAS五大热点技术问题分析
  7. RC电路 波形分析
  8. 新浪云服务器 java 部署
  9. 依照以下条件写出合适的XML Schema.
  10. 基于IOS音乐播放器在线歌词同步小程序系统(音乐小程序)
  11. matlab 构建雅可比矩阵,matlab jacobian函数
  12. SQL Server 让你的数据来去自如——批处理
  13. Redis无法启动的原因以及解决方案
  14. 百度地图获取城市名称
  15. 一周AI资讯|如果深度学习成为“侦探”,会发生什么?
  16. 树莓派裸板linux,树莓派裸板开发操作系统 一
  17. 2019牛客暑假多校训练赛第七场C Governing sand(暴力)
  18. 去掉最大值和最小值后求平均值的公式
  19. 论文解读:2019-CVPR-Google-Learning the Depths of Moving People by Watching Frozen People
  20. C++编程(不使用对数函数)可用下列公式计算以2为底的对数

热门文章

  1. Oracle数据库编译存储过程挂死问题解决办法
  2. (pytorch)yolov3训练自己的模型
  3. Window10下让自己开发的自启动程序支持拉起一个图形化软件
  4. 利用Rsyslog向ElasticSearch推送nginx access日志
  5. 使用Native API查询Windows硬盘分区系统设备名称
  6. Windows开机运行程序
  7. 献给自己技术成长的第一年
  8. 计算机网络监控,计算机网络连接监控系统.doc
  9. mysql 事务不生效_@Transactional事务不生效的几种解决方案
  10. IIS网站本机可以访问但局域网其他机器无法访问 解决方法