class test{ public static void main(String[] args){ fun f=new fun(); for(int i=0;i<=5;i++) System.out.print(f.fact1(i)+" "); System.out.println(); for(int i=0;i<=5;i++) System.out.print(f.fact2(i)+" "); System.out.println(); long [] p=f.fact3(5); for(int i=0;i<p.length;i++) System.out.print(p[i]+" "); System.out.println(); } } class fun{ long fact1(int n){ long result=1; if(n==0)return 0; for(int i=1;i<=n;i++) result=result*i; return result; } long fact2(int n){ if(n==0)return 0; if(n==1)return 1; else return n*fact2(n-1); } long [] fact3(int n){ long [] result=new long[n+1]; result[0]=0; result[1]=1; for(int i=2;i<=n;i++) result[i]=result[i-1]*i; return result; } }
② 关于JAVA阶乘的算法的解释
//程序要能运行就必须用 public 修饰
public class jie
{
//程序入口
public static void main(String args[])
{
//定义变量sum用来保存阶乘的结果的和
long sum = 0;
//定义变量i
int i;
//这是外循环,变量i的值从1向10递增,
for(i=1;i<=10;i++)
{
//定义变量ji用来保存某个数的阶乘结果
long ji = 1;
//定义变量J
int j;
//这是内循环,变量j将从1向i递增
for(j=1;j<=i;j++)
{
//当j=1时 JI=JI*J=1*1=1;
//当J=2时 JI=JI*J=1*2=2;
//当J=3时 JI=JI*J=2*3=6
//当J=4时 JI=JI*J=6*4=24
//以此类推直到 J=I 时,循环结束...
ji *= j;//这行程序等效于: ji=ji*j;
}
//总和加上刚才某个数的阶乘的结果
sum += ji;//这行程序等效于: sum=sum+ji;
}
//打印输出结果
System.out.println("结果是:"+sum);
}
}
③ 用java求阶乘
求阶乘用for就行,假设我们要对num求阶乘,结果是result
int result = 1;
for (int i=1;i<=num;i++){
result *= i;
}
此时result的值即为num的阶乘(仅正整数)
④ java中阶乘怎么表示
没有自带方法表示阶乘,必须自己通过循环来实现
⑤ 用java递归算法求一个数字的阶乘
用递归算法求一个数字的阶乘的程序如下:
public class JieCheng {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入一个整数:");
int n = in.nextInt();
System.out.println(n+"!="+f(n));
}
static long f(int n){
if (n==1) return 1;
else return n*f(n-1);
}
}
运行结果:
请输入一个整数:6
6!=720
⑥ java阶乘的算法是什么
public class Factorial { public static int factorial(int x) { if (x < 0) { throw new IllegalArgumentException(x must be=0); } int fact = 1; for (int i = 2; i <= x; i++) { fact *= i; } return fact; } public static void main(String args[]) { System.out.print(factorial(10)); }}这个是利用递归算法制成的。public class factorial2 { public static int factorial2(int x) { if (x < 0) { throw new IllegalArgumentException(x must be=0); } if (x <= 1) { return 1; } else return x * factorial2(x - 1); } public static void main(String args[]) { System.out.print(factorial2(17)); }}这个是数组添加的方法制成的,可以计算更大的阶乘。public class Factorial3 { static long[] table = new long[21]; static {table[0] = 1; } static int last = 0; public static long factorial(int x) throws IllegalArgumentException { if (x = table.length) { throw new IllegalArgumentException(Overflow; x is too large.); } if (x <= 0) { throw new IllegalArgumentException(x must be non-negative.); } while (last < x) { table[last + 1] = table[last] * (last + 1); last++; } return table[x]; } public static void main(String[] args) { System.out.print(factorial(4)); }}最后一个是利用BigInteger类制成的,这里可以用更大的更大的阶乘。import java.math.BigInteger;import java.util.*;public class Factorial4{ protected static ArrayList table = new ArrayList(); static{ table.add(BigInteger.valueOf(1));} public static synchronized BigInteger factorial(int x){ for(int size=table.size();size<=x;size++){ BigInteger lastfact= (BigInteger)table.get(size-1); BigInteger nextfact= lastfact.multiply(BigInteger.valueOf(size)); table.add(nextfact); } return (BigInteger) table.get(x); } public static void main(String[] args) { System.out.print(factorial(4)); } }其实方法还有很多,这里提供的也算是个框架形式。分享之
⑦ Java编程:写出求n的阶乘的方法,并算出1到7的阶乘的和
Java编程:写出求n的阶乘的方法,并算出1到7的阶乘的和方法:
先编写求阶乘的方法,再通过for循环计算1到7的阶乘的和。
具体实现:
publicclassTest{
publicstaticvoidmain(String[]args){
intsum=0;//保存阶乘的和
for(inti=1;i<=7;i++)
sum+=factorial(i);
System.out.println(sum);
}
//求阶乘方法,传入一个整数,返回这个整数的阶乘
publicstaticintfactorial(intnum){
intresult=1;
for(inti=1;i<=num;i++){
result*=i;
}
returnresult;
}
}
⑧ java中怎么实现阶乘,如计算1~100的阶乘
使用BigInteger大容量运算类计算100的阶乘
一.一般算法(循环)
view plain to clipboardprint?
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i <= 100; i++) {
result *= i;
}
System.out.println(result);
}
}
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i <= 100; i++) {
result *= i;
}
System.out.println(result);
}
}
输出结果为0,因为int无法保存下100的阶乘的结果,100的阶乘的长度至少大于50位,也要大于long,double
二.使用BigInteger大容量运算类
view plain to clipboardprint?
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//为result赋初始值,为1
for (int i = 1; i <= 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//调用自乘方法
}
System.out.println(result);//输出结果
System.out.println(String.valueOf(result).length());//输出长度
}
}
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//为result赋初始值,为1
for (int i = 1; i <= 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//调用自乘方法
}
System.out.println(result);//输出结果
System.out.println(String.valueOf(result).length());//输出长度
}
}
计算结果为:000000000000000000
产度:158
⑨ java输入一个数n,计算n的阶乘(5的阶乘=1*2*3*4*5)
1、首先要理解一下阶乘的公式:
n!=n*(n-1)*(n-2)*....*2*1,5!=5*4*3*2*1
#include//头文件stdio.h在新浪博客中无法显示加上就可以了
intmain()
{
intt=5,i=4;//要是求其他的数的阶乘的话,把t的值改为其他数,
//再把i改为(t-1)就行了
while(i>=1)
{
t=t*i;
i--;
}
printf("5的阶乘结果是:%d ",t);
return0;
}
2、运行结果如下: