繁体   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