在此代碼中,arrLength 從 4 開始,然后一直遞減,直到達到 0。在它達到零的那一刻,它不應該再執行 if 塊內的內容。但是發生的事情是,當它達到零時,它仍然執行 println 行。不了解該 println 行是如何執行的,因為該行位于 if 塊內,并且當 arrLength 變為零時, if 塊內的任何內容都不應執行。最后它列印 5, 6, 2, 1 而在我的理解中,它不應該列印任何東西,從不執行 println 行。
class ArrayElements{
public void printElements(int arr[], int arrLength){
if(arrLength != 0){
arrLength--;
printElements(arr, arrLength);
System.out.println(arr[arrLength]);
}
}
}
public class Main {
public static void main(String[] args) {
int arr[] = {5,6,2,1};
int arrLength = arr.length;
ArrayElements mv = new ArrayElements();
mv.printElements(arr, arrLength );
}
}
uj5u.com熱心網友回復:
了解正在發生的事情的一種簡單方法是修改您的 printElements 方法,如下所示:
public void printElements(int arr[], int arrLength){
System.out.println("arrLength value is " arrLength);
if(arrLength != 0){
arrLength--;
printElements(arr, arrLength);
System.out.println(arr[arrLength]);
}
}
輸出將是:
arrLength value is 4
arrLength value is 3
arrLength value is 2
arrLength value is 1
arrLength value is 0
5
6
2
1
如您所見,您進行了 5 次遞回呼叫,但只列印了 4 個值。原因是當 arrLength 等于 0 時沒有執行第二個 println。
這意味著當 arrLength 為 0 時,您不輸入 if 條件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/470045.html