我理解递归和代码的原理,但是不理解循环,为什么变量在同一行,我们可以解释循环是如何工作的?
这一行:
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;
}
感谢的
答案 0 :(得分:1)
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
总结一下,如果您愿意,可以将其翻译为int i = digit;
int j = 1;
while ( i >= 1 ) {
// the code inside the for loop goes here
i--;
j++;
}
循环:
max r
x1**2 + y1**2 <= (1-r)**2
(x1-x2)**2 + (y1-y2)**2 >= 4*r**2
0 <= r <= 1
请注意,最后的动作发生在循环内部,而起始条件在循环之前发生。
这也应该澄清为什么你可以在同一行中有各种声明,只要它们属于同一类型。
答案 1 :(得分:0)
gmvo.GroupMembershipValidList = new ListGroupMembershipUploadInput();
循环中有三个部分
您可能在第一部分中进行了多次初始化,只要类型保持不变,以下内容完全可能:
我们在for
声明的第一部分中声明并实例化三个变量。
for