为什么-Infinity就像比较数字以返回最大值的基础?

时间:2019-04-18 14:39:46

标签: javascript loops infinity

在这段代码中,我似乎无法理解为什么-Infinity表现得像底数,因此与之相比,它返回​​数字数组中的最大数字。

function max(...numbers) {
   let result = -Infinity;
   for (let number of numbers) {
     if (number > result) result = number;
   }
   return result;
}

1 个答案:

答案 0 :(得分:2)

乍一看令人困惑,也许您会想到这样的解决方案:

 let result = 0;

问题在于,当我们想找到数组的最大值时,我们需要将每个元素相互比较。我们将MAXIMUM设置为-INFINITY更像是一种“习惯”。这仅表示到目前为止,最大的要素就是我们可以表达的最低数量。是否有意义?我们仅假设我们将发现的最大数字是-Infinity。然后,我们将数组中的元素与此基数(在本例中为-Infinity)进行比较,如果我们为假(可能是),则将-Infinity替换为大于当前值的下一个数字。我们针对整个数字范围进行此操作,这就是找到最大值元素的方式。

您可以选择多个元素作为起点,但不要选择自己输入的数字(只有在练习要求时才应该这样做)。 例如,如果您选择:

let result = 0;

那么您可能有问题。也许这些数字都是负数,例如[-3,-13,-5,13,-99],但是您已经将最大数字设置为0,所以每次比较都是错误且无用的。

因此,请记住,在这种情况下,将基本值设置为-Infinity是一个好习惯,或者如果您想采用另一种方法,则将基本值设置为数组中的第一个元素。