[英]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)
。 j
從1
開始。 每個循環的驗證:
i
聲明的開始處是否大於或等於1,如果是,則繼續循環,否則不停止。 循環結束時的動作:
i--
它降低的值i
用1
和j++
增加值j
通過1
。 總而言之while
如果您願意,可以將其轉換為while
循環:
int i = digit;
int j = 1;
while ( i >= 1 ) {
// the code inside the for loop goes here
i--;
j++;
}
請注意,最后的動作發生在循環內部,而起始條件在循環之前。
這也應該闡明為什么只要同一類型可以在同一行中包含各種聲明。
for
循環中有三個部分
您可以在第一部分中進行多次初始化,只要類型保持不變,以下完全可能:
我們在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.