在下面使用4个例子对题目中的结论进行证明;
例1(使用n--):
public class Test {
public static void main(String[] args) {
int n = 20;
System.out.println("递归求和:" + getSum(n));
}
private static long getSum(int n) {
if (n == 1) {
return 1l;
}
// *****注意:这里使用了n--
return n + getSum(n--);
}
}
结果:
解释:
由于n--的话,真正赋值的还是n,所以一直在进行递归调用,所以会出现栈溢出异常
例2(使用--n):
public class Test {
public static void main(String[] args) {
int n = 20;
System.out.println("递归求和:" + getSum(n));
}
public static long getSum(int n) {
if (n == 1) {
return 1l;
}
// *****注意:这里使用了--n
return n + getSum(--n);
}
}
结果:
递归求和:210
解释:
由于--n的话,真正赋值的是n-1,所以不会出错
例3(使用n-1):
public class Test {
public static void main(String[] args) {
int n = 20;
System.out.println("递归求和:" + getSum(n));
}
public static long getSum(int n) {
if (n == 1) {
return 1l;
}
// *****注意:这里使用了n-1
return n + getSum(n - 1);
}
}
结果:
递归求和:210
解释:
本次使用的就是n-1,所以不会出错
例4(n++、++n、n+1):
这些解释方法和上面的类似,n++的话真正赋值的是n,所以一直进行递归调用就会出现栈溢出异常,而++n真正赋值的是n+1,而n+1就不用说了