所以我正在學習如何利用Java遞歸。我寫了一個簡單的程序,它添加了1和n之間的所有數字,並且它看起來是工作。在我感到困惑的地方是print語句,它打印4次(對於解決方案的每個較小部分的每個結果),如果再次調用方法並且條件尚未滿足,我很困惑它是如何到達打印語句的。我知道這可以通過在main方法中創建一個int變量並將返回值分配給它來繞開。遞歸方法打印4次
public static void main(String[] args) {
int sum = recursiveCall(5);
}
public static int recursiveCall(int num) {
int sum = 0;
if(num == 1) {
sum = 1;
System.out.println(sum);
return sum;
}
else {
sum = recursiveCall(num - 1) + num;
}
// Notice it prints out all results of sum, not just the final value.
System.out.println(sum);
return sum;
}
通過在主方法 –
中創建一個int變量可以避免遞歸打印,假設在else塊中調用'recursiveCall()'方法之後,除了'num == 1之外,它會打印4次'sum' '並從方法中返回。 –