为什么 -Infinity 就像将数字与 return max 进行比较的基础?

Why -Infinity is like a base for comparing numbers to return max?

在这段代码中,我似乎无法理解为什么 -Infinity 表现得像一个基数,所以与它相比时 returns 是数字数组中的最大数字。

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

一开始会让人感到困惑,在您看来,解决方案可能是这样的:

 let result = 0;

问题是当我们想要找到数组的最大值时,我们需要将每个元素相互比较。我们将 MAXIMUM 设置为 -INFINITY 更像是一个 "habit"。这仅仅意味着到目前为止最大的元素是我们可以表达的最小可能数字。是否有意义?我们简单地假设我们将找到的最大数字是-Infinity。然后我们将数组中的元素与这个基数(在我们的例子中是 -Infinity)进行比较,如果我们是假的(并且可能是),那么我们将 -Infinity 替换为下一个大于我们当前值的数字。我们对整个数字范围都这样做,这就是我们找到最大元素的方式。

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

let result = 0;

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

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