/*
递归方法的使用(了解)
1.递归方法:一个方法体内调用它自身。
递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。
/
public class RecursionTest {
public static void main(String[] args) {
// 例1:计算1-100之间所有自然数的和
// 方式一:
// int sum = 0;
// for (int i = 1; i <= 100; i++) {
// sum += i;
// }
// System.out.println(sum);
RecursionTest test = new RecursionTest();
int sum1 = test.getSum1(100);
System.out.println(sum1);
}
public int getSum(int n){
if (n == 1){
return 1;
}else {
return n + getSum(n - 1);
}
}
// 例2:计算1-n之间所有自然数的乘积:n!
public int getSum1(int n) {
if (n == 1) {
return 1;
} else {
return n * getSum1(n - 1);
}
}
}
数据溢出了
int的最大范围还不到30亿
我的天哪,你晓得100的阶层有好大不,用java大数类型才能表示,也就是字符串来模拟数字运算
int sum = 1;
for (int i=1;i<100;i++){
sum *= i;
System.out.println(i+"\t"+ 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
21 -1195114496
22 -522715136
23 862453760
24 -775946240
25 2076180480
26 -1853882368
27 1484783616
28 -1375731712
29 -1241513984
30 1409286144
31 738197504
32 -2147483648
33 -2147483648
34 0
35 0
36 0
37 0
38 0
39 0
40 0
41 0
42 0
43 0
44 0
45 0
46 0
47 0
48 0
49 0
50 0
51 0
52 0
53 0
54 0
55 0
56 0
57 0
58 0
59 0
60 0
61 0
62 0
63 0
64 0
65 0
66 0
67 0
68 0
69 0
70 0
71 0
72 0
73 0
74 0
75 0
76 0
77 0
78 0
79 0
80 0
81 0
82 0
83 0
84 0
85 0
86 0
87 0
88 0
89 0
90 0
91 0
92 0
93 0
94 0
95 0
96 0
97 0
98 0
99 0
Process finished with exit code 0