`
ikon
  • 浏览: 107844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

计算任意正整数的阶乘

 
阅读更多

      由于阶乘的结果会超出java数据类型的最大范围,所以采用数组或集合作为存储结果的方式;集合具有长度的自动伸缩,故采用集合作为最终的存储方式;

      算法如下:

      各位相乘,满十进一位;

 

package com.datastruct.array;

import java.util.ArrayList;
import java.util.List;

/**
 * 求n!
 * @author ikon
 *
 */
public class Factorial {
	public static void main(String[] args){
		List<Integer> datas = new ArrayList<Integer>();
		datas.add(1);	
		
		
		System.out.print("输入要计算的阶乘的数字 : ");
		ConsoleReader console = new ConsoleReader(System.in);
	
		int n = console.readInt();
		for(int i=1;i<=n;i++){
			for(int j=0;j<datas.size();j++){
				datas.set(j, datas.get(j)*i);				
			}
			for(int j=0;j<datas.size();j++){
				if(datas.get(j)>9){
					if(datas.size()==j+1){
						datas.add(j+1,0);  //这里要注意进位,调用add
					}
					datas.set(j+1, datas.get(j+1)+datas.get(j)/10);
					datas.set(j, datas.get(j)%10);
				}
			}			
		}
		System.out.print(n+"!=");
		for(int index=datas.size()-1;index>-1;index--){
			System.out.print(datas.get(index));
		}
	}
}

 

ConsoleReader是个接收终端输入的工具类,如下:

 

package com.datastruct.array;


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;

public class ConsoleReader
{	
	public ConsoleReader(InputStream inStream)
   	{
   		reader = new BufferedReader (new InputStreamReader(inStream)); 
   	}
   
	public int readInt() 		
   	{  
   		String inputString = readLine();
      		int n = Integer.parseInt(inputString);
      		
      		return n;
   	}
   
	public double readDouble() 	
   	{  
   		String inputString = readLine();
      		double x = Double.parseDouble(inputString);
      		
      		return x;
   	}

	public String readLine()
   	{  
   		String inputLine = "";
   		
      		try
      		{
      			inputLine = reader.readLine();
      		}
      		catch(IOException e)
      		{
      			System.out.println(e);
         		System.exit(1);
      		}

      		return inputLine;
   	}
   	
   	private BufferedReader reader; 
}

  

分享到:
评论

相关推荐

    求整数n的阶乘(Matlab)

    采用Matlab计算整数n的阶乘。子函数形式,直接调用。 采用if-else语句实现,非常方便。文档里面也有注释,方便学习。结果输出到命令窗口。

    编程Java求任意一个正整数的阶乘.doc

    Java语言中实现正整数阶乘的两种方法 Java是一种高级语言,广泛应用于安卓开发、Web开发、桌面应用开发等领域。在数学运算中,阶乘是一个非常重要的概念,它是指一个正整数的连续乘积。例如,5的阶乘是5*4*3*2*1=...

    java 求任意一个正数的阶乘

    在编程领域,阶乘是一个常见的数学概念,通常用于计算组合数和概率问题。...综上所述,无论选择循环还是递归,Java都能有效地计算任意正整数的阶乘。理解这两种方法的原理和应用场景,对提升编程能力大有裨益。

    计算任意数阶乘的算法及实现,详细分析

    本文介绍了一种用于计算任意大小的正整数阶乘的算法。该算法主要通过使用整型数组来存储大数,并通过一系列辅助函数来完成加法、乘法等基本运算。 #### 三、关键函数实现 ##### 1. 模拟正整数乘以10的函数 `multi_...

    c语言编程题之数学问题阶乘后的0.zip

    在C语言编程中,"阶乘后的0"通常是指计算一个正整数的阶乘(n!)后,结果末尾包含的零的数量。这个问题涉及到数论中的因子分解和质因数5。...通过上述的C代码,我们可以有效地计算任意正整数阶乘后末尾零的个数。

    精确计算N的阶乘

    其中,N可能是小于200的任意正整数。 【输入形式】 输入文件为当前目录下的factor.in。 该文件只包含一个正整数,表示需要求该正整数的阶乘。 【输出形式】 输入文件为当前目录下的factor.in。 该文件只包含...

    精确计算N的阶乘

    其中,N可能是小于200的任意正整数。 【输入形式】 输入文件为当前目录下的factor.in。 该文件只包含一个正整数,表示需要求该正整数的阶乘。 【输出形式】 输入文件为当前目录下的factor.out。 该文件只...

    C语言高精度计算N的阶乘代码

    其中,N可能是小于200的任意正整数。 【输入形式】 输入文件为当前目录下的factor.in。该文件只包含一个正整数,表示需要求该正整数的阶乘。 【输出形式】 输入文件为当前目录下的factor.in。该文件...

    编写程序,输入整数 n,计算并输出 n 的阶乘

    计算阶乘 编写程序,输入整数 n,计算并输出 n 的阶乘。 n!=1×2×3×⋯×n 其中:0≤n≤20 本程序修改result数组大小可计算n&gt;20的阶乘

    求N的阶乘(大整数乘法)

    其中,N可能是小于200的任意正整数。 【输入形式】 输入文件为当前目录下的factor.in。 该文件只包含一个正整数,表示需要求该正整数的阶乘。 【输出形式】 输出文件为当前目录下的factor.out。 该文件只...

    C++ 求任意数的阶乘

    阶乘定义为非负整数n的阶乘是所有小于及等于n的正整数的积,记作n!。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。 在C++中,我们可以使用循环或递归两种方法来实现阶乘计算。下面我们将详细介绍这两种方法。 ### 1. ...

    Java计算阶乘 源代码

    阶乘是将一个正整数n与小于它的所有正整数相乘的结果,表示为n!。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。 在Java中,我们可以使用循环或递归的方式来计算阶乘。以下是两种可能的实现方式: **1. 使用循环计算...

    计算大数N的阶乘,N可以任意大,只需修改数组的大小即可。

    阶乘是一个数学概念,表示一个正整数N的所有小于等于N的正整数的乘积,表示为N!。例如,5的阶乘是5! = 5 × 4 × 3 × 2 × 1 = 120。然而,当N变得非常大时,常规的整型或浮点型数据类型可能无法存储这么大的结果,...

    C#三个小程序 乘法运算 求阶乘和的运算 判断素数

    阶乘是一个正整数n与小于它的所有正整数的乘积,表示为n!。例如,5! = 5 × 4 × 3 × 2 × 1 = 120。在C#中,你可以通过循环或递归方式实现。循环方法如下: ```csharp int n = 5; int factorial = 1; for (int i ...

    Java版超大整数阶乘算法代码详解-10,0000级

    阶乘是一个数学运算符,表示一个数的所有正整数因子相乘的结果。例如,5 的阶乘(5!)等于 5 × 4 × 3 × 2 × 1 = 120。 在计算超大整数的阶乘时,我们需要考虑到计算机的整数范围限制。例如,如果我们需要计算 ...

    阶乘算法 阶乘问题 C# 小程序

    阶乘算法是计算一个正整数n的所有小于等于n的正整数的乘积的数学概念,表示为n!。在计算机科学中,阶乘算法经常用于解决各种问题,如组合数学、排列组合以及概率计算等领域。C#是一种常用的编程语言,它提供了多种...

    易语言循环求阶乘

    通过这种循环求解方法,我们可以轻松地计算出任意正整数的阶乘。 学习如何在易语言中实现循环求阶乘对于初学者来说是一个很好的起点,它可以帮助理解基础的编程概念,如变量、条件语句、循环结构以及简单的数学运算...

    给出一个任意数,求它的阶乘

    本问题要求我们编写一个程序,能够接受任意输入的正整数n,并计算其阶乘。 实现阶乘的计算可以通过递归或循环两种方式。首先,我们来看递归方法: 1. **递归实现**:递归的基本思想是函数调用自身,直到达到基本...

    c#计算n的阶乘源码

    本篇将深入探讨如何使用C#语言在ASP.NET环境中实现计算任意正整数n的阶乘功能。 首先,我们需要理解阶乘的定义:对于一个非负整数n,它的阶乘(表示为n!)是所有小于等于n且与n互质的正整数的乘积。例如,5的阶乘...

    易语言递推阶乘

    我们可以根据这个公式编写一个简单的递推函数,用于计算任意正整数的阶乘。 在易语言中,我们可以创建一个函数,比如`递推阶乘`,接收一个整数参数n,然后用循环或递归的方式来实现递推计算。以下是一个可能的...

Global site tag (gtag.js) - Google Analytics