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

如题:编写一道JAVA阶成程序,第1张

public static void main(String[] args) {

int sum = 0

int subSum = 1

for (int i = 1i <= 20i++) {

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 = 1i <= 20i++) {

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

你可以用吵槐数组实现大数阶乘,

另外你打印数的方法不好

int stack[1024],top = 0

while(m)

{

stack[top++] = m%10000

m/=10000

}

printf("%d",stack[--top])

while(--top!=-1)

printf("旁碧,%.4d"升启友,stack[top])


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12425485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存