[英]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.