以下两种结构有什么区别?我为每个人获得了不同的输出:
for (int counter = 0; (counter < numberOfFolds) && counter != currentFold; counter++)
{
if (instances[counter] < minimum)
{
return (currentFoldHasAtleastMinimum && true);
}
}
AND
for (int counter = 0; (counter < numberOfFolds); counter++)
{
if (counter != currentFold)
{
if (instances[counter] < minimum)
{
return (currentFoldHasAtleastMinimum && true);
}
}
}
基本上,第二个代码块,只是打破for循环中的复合条件,并使用额外的if语句将其带入内部(我可能在这里缺少一些非常基本的东西,它可能真的很愚蠢,但我认为它们是一样的。)
请帮忙。看起来它们实际上并不相同,我无法弄清楚原因。
答案 0 :(得分:2)
一旦子条件变为假(第counter >= numberIfFolds
或counter == currentFold
),第一个条件将结束循环。第二个循环仅在counter >= numberOfFolds
时终止。但是,它会检查是否counter == currentFold
并跳过执行这些语句。然而,循环将继续。
答案 1 :(得分:1)
在第一个示例中,当counter
等于currentFold
时,循环终止。
在第二个示例中,循环将在满足该条件时继续,而只会在counter < numberOfFolds
为假时终止。