如题:编写一道JAVA阶成程序

编写应用程序求1!+2!+…+20!的和

public static void main(String[] args) {
int sum = 0;
int subSum = 1;
for (int i = 1; i <= 20; i++) {
subSum *= i;
System.out.println(i + "的阶乘: " + subSum);

sum += subSum;
}

System.out.println("总和为: " + sum);
}

运行结果:
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的阶乘: 1932053504
14的阶乘: 1278945280
15的阶乘: 2004310016
16的阶乘: 2004189184
17的阶乘: -288522240
18的阶乘: -898433024
19的阶乘: 109641728
20的阶乘: -2102132736
总和为: 268040729

请注意,从 "17的阶乘: -288522240" 开始,后面阶乘已经超出整数最值了,所以需要改成使用long类型来保存.

正确程序如下:
public static void main(String[] args) {
long sum = 0;
long subSum = 1;
for (long i = 1; i <= 20; i++) {
subSum *= i;
System.out.println(i + "的阶乘: " + subSum);

sum += subSum;
}

System.out.println("总和为: " + sum);
}

正确程序结果:
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
总和为: 2561327494111820313
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-30
看下谁的算法比我的简单高效,呵呵

public class FacCalculator {

public static void main(String args[]) {

long sum = 0L;

long previous = 1L;

for (int i = 1; i <= 20; i++) {
previous = previous * i;
sum += previous;
}

System.out.println("1!+2!+3!+...+18!+19!+20! = " + sum);
}
}

-------------
1!+2!+3!+...+18!+19!+20! = 2561327494111820313
第2个回答  2011-01-03
//Main.java 测试类
public class Main {

public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
dog.cry();
cat.cry();
}
}

//抽象类
abstract class Animal {
public abstract void cry();
//如果不马上实现cry()方法,请标记abstract
}

class Cat extends Animal{

@Override
public void cry() {
System.out.println("小猫喵喵叫");
}
}

class Dog extends Animal{

@Override
public void cry() {
System.out.println("小狗汪汪叫");
}
}

如题:编写一道JAVA阶成程序
14的阶乘: 87178291200 15的阶乘: 1307674368000 16的阶乘: 20922789888000 17的阶乘: 355687428096000 18的阶乘: 6402373705728000 19的阶乘: 121645100408832000 20的阶乘: 2432902008176640000 总和为: 2561327494111820313

编写java程序,怎样实现接收用户输入的正整数,输出该数的阶乘?
按照你的要求编写的求阶乘的Java程序如下 \\x0d\\x0aimport java.util.Scanner;\\x0d\\x0apublic class DDD {\\x0d\\x0apublic static void main(String[] args) {\\x0d\\x0aSystem.out.print("请输入一个正整数(1~10)");\\x0d\\x0aScanner sc=new Scanner(System.in);\\x0d\\x0aint...

如何用java语言实现阶乘
阶乘是比较适合递归的思路,因为n!=n*(n-1)!,直到求解1!作为结束 代码(因为不太熟悉java,可能还需要题主进行微调)long Factorials(int n){ if(n<0) return -1;\/\/主要为了表示错误,题主可以自定义 if(n==1||n==0) return 1;\/\/0!是特殊约定,1!是作为递归的结束 else return n*...

Java编程:写出求n的阶乘的方法,并算出1到7的阶乘的和
Java编程:写出求n的阶乘的方法,并算出1到7的阶乘的和方法:先编写求阶乘的方法,再通过for循环计算1到7的阶乘的和。具体实现:public class Test { public static void main(String[] args) { int sum = 0; \/\/保存阶乘的和 for(int i = 1;i<=7;i++) sum += factorial(i);...

编写java程序,实现接收用户输入的正整数,输出该数的阶乘
按照你的要求编写的求阶乘的Java程序如下 import java.util.Scanner;public class EE { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个正整数"); int n=sc.nextInt(); if(n<0) System.out.println("输入错误!"); ...

用java编写计算N的阶乘
class Factorial{ private long sum;Factorial(int x){ sum=1;for(int n=1;n<=x;n++){ sum*=n;} } public static void main(String[] args){ Factorial obj=new Factorial(3);System.out.println("3的阶乘为:"+obj.sum);} } ...

java,可以用for循环写一个到5的阶乘计算
用for循环写一个到5的阶乘计算的Java程序如下 public class C { public static void main(String[] args) { for(int i=1;i<=5;i++){ int factorial =1; for(int j=1;j<=i;j++){ factorial *=j; } System.out.println(i+"!="+factorial); } }}运行结果 1!

怎样用java编一个计算从1到5的整数阶乘的程序?
DecimalFormat("0.00");JTextArea outputTextArea=new JTextArea(11,20);int sum=1;for(int i=1;i<=5;i++){sum=sum*i;outputTextArea.append(i+"\\t"+precisionTwo.format(sum)+"\\n");} JOptionPane.showMessageDialog(null, outputTextArea,"Count interest",JOptionPane.PLAIN_MESSAGE);...

创建一个阶乘应用程序 一个数X的阶乘(通常记作X!)等于X*(X-1)*...
import java.util.Scanner;public class Factorial { \/\/阶乘函数 public static int factorial(int i) { if (i != 1)return i * factorial(i - 1);else return 1;} public static void main(String[] args) { System.out.println("请输入您要计算阶乘的数:");Scanner sc = new Scanner(...

怎么用Java程序计算20的阶乘?
java程序计算20的阶乘,通过使用bigdecimal类来接收数据,如下例子:public class Test{ public static void main(String[] args) { BigDecimal cnt = new BigDecimal(0); for (int i = 1; i <= 20; i++) { cnt = cnt.add(jiecheng(i));\/\/循环计算20之内的阶乘 } System.out....

相似回答