```java public class RecursionTest { public static void main(String[] args) { int result = sum1(1, 10); System.out.println(result); int result2 = sum2(1, 10); System.out.println(result2); //sum1 跟 sum3 是一樣的結果, //只是 sum3 把要 return 的值提出來, //會比較容易觀察過程,並理解整體是如何演化 int result3 = sum3(1, 10); System.out.println(result3); } public static int sum1(int start, int end) { if (end > start) { return end + sum1(start, --end); } return end; } //錯誤示範,end + sum 是一體計算的,只提 sum 出來會導致計算錯誤 public static int sum2(int start, int end) { if (end > start) { int r = sum2(start, --end); return end + r; } return end; } public static int sum3(int start, int end) { if (end > start) { System.out.println(end); int r = end + sum3(start, --end); System.out.println(end + " " + r); return r; } return end; } } ```