簡體   English   中英

遞歸Java-for循環不同地不了解如何工作

[英]Recursion java - differently for loop does not understand how to work

我了解遞歸和代碼的原理,但不了解循環,為什么變量在同一行中,我們可以解釋循環的工作原理?

這行:

 for (int i = digit, j = 1; i >= 1; i--, j++)

編碼:

public static boolean hasSubSeries(int[] arr, int digit) {
    return hasSubSeriesHelper(arr, arr.length, digit);
}

public static boolean hasSubSeriesHelper(int[] arr, int size, int digit) {
    if (size == 0)
        return false;

    for (int i = digit, j = 1; i >= 1; i--, j++) {
        if (arr[size - j] != i)
            return hasSubSeriesHelper(arr, size - 1, digit);
    }

    return true;
 }

謝謝

for循環的結構如下:

for( starting conditions; verification at each loop; action at end of loop)

在您的特定情況下:

for (int i = digit, j = 1; i >= 1; i--, j++)
  • 起始條件:

    • 變量i等於在函數開始時給定的變量digits中包含的值hasSubSeriesHelper(int[] arr, int size, int digit)
    • 變量j1開始。
  • 每個循環的驗證:

    • 一旦每個循環完成,我們將檢查它是否為True,然后繼續循環,否則返回循環。
    • 我們檢查一下i聲明的開始處是否大於或等於1,如果是,則繼續循環,否則不停止。
  • 循環結束時的動作:

    • 我們做兩個動作i--它降低的值i1j++增加值j通過1

總而言之while如果您願意,可以將其轉換為while循環:

int i = digit; 
int j = 1;
while ( i >= 1 ) {
    // the code inside the for loop goes here
    i--;
    j++;
}

請注意,最后的動作發生在循環內部,而起始條件在循環之前。

這也應該闡明為什么只要同一類型可以在同一行中包含各種聲明。

for循環中有三個部分

  • N°1:變量的初始化
  • N°2:評估布爾表達式以繼續/停止循環
  • N°3:對變量進行的更改

1個

您可以在第一部分中進行多次初始化,只要類型保持不變,以下完全可能:

我們在for聲明的第一部分中聲明並實例化三個變量。

for(int i = 2, j = 2*i, k = 4*j ; i < 3 ; i++) {
    System.out.println(i + " " + j + " " + k); // 2 4 16
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM