[英]Why println is being executed in this recursive piece of code?
在這段代碼中,arrLength 從 4 開始,然后一直遞減直到達到零。 在它達到零的那一刻,它不應該再執行 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 );
}
}
了解正在發生的事情的一種簡單方法是像這樣修改 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]);
}
}
output 將是:
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 條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.