我有这两个循环来查找整数数组中的最大数字(for循环和while循环用于相同的目的) 为:
var forHighest = function(array) {
var highest = array[0];
for (var i = 0; i < array.length; i++) {
if (highest < array[i]) {
highest = array[i];
}
}
return highest;
};
虽然:
var whileHighest = function(array) {
var i = 0;
var highest = array[0];
while (i < array.length) {
if (array[i] > highest)
highest = array[i];
i++;
}
return highest;
};
但是现在我需要创建一个While循环但是我尝试的所有内容都会在我的数组的[0]索引处给出数字。我不认为我曾经在功能上使用过do ... while循环,所以也许我不完全理解它们是如何工作的。以下是我的一些尝试:
var doWhile = function(array) {
var i = 0;
do {
i++;
} while (i < array.length);
if (array[i] > highest)
highest = array[i];
return highest;
};
也:
var i = 0;
var highest = array[0];
do{
if(highest < array[i]){
highest = array[i];
i++;
}
} while(i < array.length);
和
var doWhile = function(array) {
var i = [i];
// var i = 0;
var highest = array[i];
do
{
i++;
} while (array[i] < highest && i < array.length);
// if (array[i] > highest);
return array[i];
但它们都不起作用。有人可以向我解释我做错了吗?
答案 0 :(得分:1)
首先,要了解do-while
循环与while
循环没有太大区别。唯一的区别是do-while
是一个退出测试循环,而while
循环是一个入口测试循环。
因此,在do-while
循环标准中,即while
括号中的条件,在退出循环时进行评估。并且为了退出循环,它必须至少进入一次循环。因此,在do-while循环中保证至少一次运行代码块。除此之外,while
循环的工作方式与do-while
相同。相同的初始化代码在循环内部引入退出标准也保持不变。
现在查看你的代码,你的while循环(如下所示)工作正常:
while (i < array.length) {
if (array[i] > highest)
highest = array[i];
i++;
}
现在,我们只需将do-while
语句移到最后并将while
放在其位置即可将其重写为do
。请注意,循环之前的代码(即,预循环初始化代码)也不需要更改。
即,
var i = 0;
var highest = array[0];
do {
if (array[i] > highest)
highest = array[i];
i++;
} while (i < array.length);
return highest;
正如@Jaromanda X在评论中提到的,你应该是金色的:)
答案 1 :(得分:1)
正如评论中所提到的,有更好的方法可以获得数组中的最大值/最小值,但问题的关键是要知道如何编写
do...while
循环
你的第二次做...虽然很接近
var i = 0;
var highest = array[0];
do {
if (highest < array[i]){
highest = array[i];
}
i++; // this line moved out of the if block
} while(i < array.length);
然而,更正确
var i = 1;
var highest = array[0];
if (array.length > 1) {
do {
if(highest < array[i]){
highest = array[i];
}
i++;
} while(i < array.length);
}
因为不需要检查数组是否是单个元素,也不需要针对数组[0]检查数组[0],所以你可以用i = 1开始循环