个人笔记,复习使用
目录
1.1 单个阶乘的结果输出
1.注意返回值return出现在for循环外面,但依然在calculateFactorial这个method里面
2.注意如何打印这样带返回值的method,即println(里面是方法名)
public class Lab2 {
public static void main(String[] args) {
System.out.println(calculateFactorial(5));
}
public static int calculateFactorial(int toCalc){
int sum = 1;
for (int i = 1; i<= toCalc; i++){
sum *= i;
}
return sum;
}
}
运行结果:
5!=120
1.2 多个阶乘的结果连续输出
法一:在main里面加一个for语句循环
public class Lab2 {
public static void main(String[] args) {
for (int i = 0; i<5; i++){
System.out.println(i + "! = " +calculateFactorial(i));
}
}
public static int calculateFactorial(int toCalc){
int result = 1;
for (int i = 2; i<=toCalc;i++){
result *= i;
}
return result;
}
}
运行结果:
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
法二:将方法改为no return的method,即void,取消返回值,在方法里面每一步循环的时候都打印
public class Lab2 {
public static void main(String[] args) {
calculateFactorial(4);
}
public static void calculateFactorial(int toCalc){
int sum = 1;
for (int i = 1; i<= toCalc; i++){
sum *= i;
System.out.println(i+"!="+sum);
}
}
}
运行结果:
1!=1
2!=2
3!=6
4!=24
1.3 注意事项-int数据类型的局限性
在刚刚写代码的过程中,定义method的返回值使用int,int的最大取值是2的31次方减去1,然而阶乘的增长很快,所以使用int在计算13!的时候便开始暴露问题了,见下。
package trial;
public class Trial {
public static void main(String[] args) {
for(int i = 5; i<14;i++){
System.out.println(i + "!/" + (i-1) + "! ="
+ calculateFactorial(i)/calculateFactorial(i-1));
}
}
public static int calculateFactorial(int toCalc){
int result = 1;
for (int i = 2; i<= toCalc; i++){
result *=i;
}
return result;
}
}
运行结果:
5!/4! =5
6!/5! =6
7!/6! =7
8!/7! =8
9!/8! =9
10!/9! =10
11!/10! =11
12!/11! =12
13!/12! =4
14!/13! =0
15!/14! =1
注意到,从13!/12!起就不正常了,这是因为13!超出了int的取值范围,想要解决这个问题,就可以将int的数据类型转化成long。
public class Trial {
public static void main(String[] args) {
for(int i = 11; i<16;i++){
System.out.println(i + "!/" + (i-1) + "! ="
+ calculateFactorial(i)/calculateFactorial(i-1));
}
}
//注意到方法部分的数据类型都从int转换为long
public static long calculateFactorial(int toCalc){
long result = 1;
for (long i = 2; i<= toCalc; i++){
result *=i;
}
return result;
}
}
运行结果:
11!/10! =11
12!/11! =12
13!/12! =13
14!/13! =14
15!/14! =15