有没有一种方法可以知道for循环在运行之前将执行多少次?

问题描述

我正在学习Java课程入门,并且正在参加实践测验。这些测验没有评分,也没有计入我们的成绩,所以我想我会在这里发布。

在通常情况下,我只需要复制代码并将其粘贴到IDE中即可,但是我想知道是否有一种逻辑上思考的方法,因此我可以找出答案。在实际考试中,我们不允许使用日食或类似方法找出答案,而这个问题将花费很长时间才能手动完成,并计算它通过for循环的次数。

这是问题:

for循环中的print语句执行多少次?

    for(int i = 0; i <347589; i++) {
       System.out.print("Give me coffee!");
    }

解决方法

您基本上可以只将for循环的上限作为答案,在这种情况下为347,589。为了得到这个答案,请考虑一个边界更小的for循环:

for (int i=0; i < 5; ++i) {
    System.out.println("Give me coffee!");
}

通过检查,我们可以看到此循环将在以下情况下执行:

i = 0
i = 1
i = 2
i = 3
i = 4

i = 5不会执行,因为这使条件失败。因此,它执行五次,与for循环的上限相同。我们可以将此问题外推到您的问题中,以得到347,589作为答案。

,

没有通用方法来计算while循环在运行之前将执行多少次。这个事实称为暂停问题的不确定性。 For循环只是while循环的语法糖,因此这也适用于for循环。停顿的问题是很多很棒的书的主题,其中包括道格拉斯·霍夫施塔特的Gödel,Escher和Bach

但是,您给出的for循环非常简单:它会增加i直到i不再满足i < 347589。变量i从0开始并以一递增:i++等效于i = i + 1;。因此i取所有连续值:0、1、2、3、4,...,347588,并且每次执行行System.out.println("Give me coffee!");

然后i的值为347589,不再满足i < 347589,因此循环暂停。

总计,“给我咖啡!”被印刷了347589次。

如果您不喜欢for循环的语法,则您的代码等效于使用while循环的以下代码:

int i = 0;
while (i < 347589)
{
    System.out.print("Give me coffee!");
    i = i + 1;
}
,

由于您有一个仅执行多次语句的简单for循环,因此您可以简单地进行计数。您可能知道循环从i=0开始执行,并在每次执行后加1,直到条件i<347589为假。所以:

i=0 -> once (1.)
i=1 -> twice (2.)
...
i=347588 -> 347589 times (347589.)
i=347589 -> loop stops.

所以print语句将被执行347589次。

,

很显然,FOR循环不是Java特定的问题。

要正确理解FOR循环,我们举一个简单的例子。

  for (int i = 0; i < 10; i++) {
     System.out.println(i); 
  }

此代码将打印从0到10(不包括)的所有数字。
因此,范围0-10有10个不同的值:

 0
 1 
 2
 3 
 4 
 5 
 6 
 7 
 8 
 9

i变为10 FOR时,将不满足循环语句(i

因此,在这种情况下,"Give me coffee!"将以相同的逻辑打印347589次。

,

在课程中,他们可能只想检查您的编码基础知识。在这些类型的问题中,您应该最重要地注意4-5件事。

1-索引的起点。

2-索引的终点,还检查是否包含该值。

3-索引的增减,无论索引是增减1还是其他值或模式。

4-它们是否在循环内是任何break语句,这也表明循环将一直运行到特定条件。

在该示例中,您给定的起点是0,终点是347589(不包括),增量为1,因此循环将运行。 347589-0 + 1(基于0的索引)= 347589次。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...