Java“求从1到10的阶乘的和”
程序员文章站
2022-03-27 22:26:35
一开始我写的代码是这样的:public class HelloWorld { public static void main(String[] args){ int i=1,t=1,sum=1,a=0; for(i=1;i<=10;i++) { for(t=1;t<=i;t++) { sum=sum*t; } a=a+sum; } System.out.println(a); }}感觉上自己...
一开始我写的代码是这样的:
public class HelloWorld {
public static void main(String[] args){
int i=1,t=1,sum=1,a=0;
for(i=1;i<=10;i++) {
for(t=1;t<=i;t++) {
sum=sum*t;
}
a=a+sum;
}
System.out.println(a);
}
}
感觉上自己没什么错误,但是运行的结果就是不正确的。后来问了室友,才找到错误所在。
以下为更正后代码:
public class HelloWorld {
public static void main(String[] args){
int i=1,t=1,sum=1,a=0;
for(i=1;i<=10;i++) {
for(t=1;t<=i;t++) {
sum=sum*t;
}
a=a+sum;
sum=1;
}
System.out.println(a);
}
}
所以错误在于,每次 t 的循环之后,sum 没有初始化。导致每次 t 的循环过后,sum 是以越来越大的值代入 i 的循环中的。
这个错误给了我很大的启发,以后在循环结构中,要注重“循环变量的初始化”。
哈,在跟正在学软件工程的高中同学说了这件事之后(我俩是高中同学,好朋友,现在都是大二),她说,写成这样也行:
public class HelloWorld {
public static void main(String[] args){
int i=1,sum=1,a=0;
for(i=1;i<=10;i++) {
sum*=i;
}
a+=sum;
System.out.println(a);
}
}
但是运行出来的结果是错误的。
更正后代码如下:
public class HelloWorld {
public static void main(String[] args){
int i=1,sum=1,a=0;
for(i=1;i<=10;i++) {
sum*=i;
a+=sum;
}
System.out.println(a);
}
}
所以问题在于,把"a+=sum"放在循环外,计算的就是10的阶乘。每次 sum*=i 之后,并不会把sum的值传给 a+=sum .
所以需要把"a+=sum"放进循环内,才可以使 i=1时求出 sum=sum* i=1 的值,此时 a=a+sum=1 .然后进行下次循环, sum = sum* i=2 ,此时 a=a+sum=3 .如此才可以使每次 i 的阶乘 sum 都可以被累加得 a .
本文地址:https://blog.csdn.net/m0_47423988/article/details/109274080
上一篇: 浅谈java15新特性
推荐阅读
-
C#实现输入10个数存入到数组中并求max和min及平均数的方法示例
-
PowerDesigner 建立与数据库的连接以便生成数据库和从数据库生成到PD中(Oracle 10G版)
-
PowerDesigner 建立与数据库的连接以便生成数据库和从数据库生成到PD中(Oracle 10G版)
-
python 求阶乘之和。求1+2!+3!+...+20!的和
-
Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文
-
Java从入门到精通系统书籍,吐血整理的,只要1元
-
C++和Java从编译到运行的过程区别
-
c语言:求n!从1到20的和
-
从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器
-
Java“求从1到10的阶乘的和”