Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么-无穷大就像是比较数字以返回最大值的基础?_Javascript_Loops_Infinity - Fatal编程技术网

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

Javascript 为什么-无穷大就像是比较数字以返回最大值的基础?,javascript,loops,infinity,Javascript,Loops,Infinity,在这段代码中,我似乎无法理解为什么无穷大的行为像一个基数,所以当与之相比时,它从一个数字数组中返回最大的数字 function max(...numbers) { let result = -Infinity; for (let number of numbers) { if (number > result) result = number; } return result; } 一开始会让人困惑,在您的脑海中,解决方案可能是这样的: let res

在这段代码中,我似乎无法理解为什么无穷大的行为像一个基数,所以当与之相比时,它从一个数字数组中返回最大的数字

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

一开始会让人困惑,在您的脑海中,解决方案可能是这样的:

 let result = 0;
问题是,当我们想要找到数组的最大值时,我们需要将每个元素相互比较。这更像是一种“习惯”,我们将最大值设为无穷大。这仅仅意味着迄今为止最大的元素是我们能表达的最低可能数。这有意义吗?我们只是简单地假设,我们能找到的最大数字是-无穷大。然后我们将数组中的元素与这个基数(在我们的例子中是无穷大)进行比较,如果我们为假(很可能是),那么我们将用下一个大于当前值的数字替换为无穷大。我们对整个数字范围都这样做,这就是我们找到最大元素的方法

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

let result = 0;
那你可能会有问题。可能这些数字都是负数,例如[-3,-13,-5,13,-99],但是您已经将最大的数字设置为0,因此每次比较都是错误的,没有用的


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

-Infinity
之外的所有数字都是
-Infinity
,对于任何数字,如4,5,3,2,3,233332,那么,当我在这个特定数组中给你的所有数字都为真时,这个数字将被分配到结果中,而这个值
-Infinity
用于启动这个过程。一旦发现数组中的另一个数字大于起始值(
-Infinity
),则
结果将具有不同的值。因此,在循环结束时,
result
将是数组中找到的最大值。只有当整个数组由
-无穷
值组成时,这才是最终返回的结果。我没有注意到结果将被重新分配给下一个值,因此比较将与数组的数量循环。谢谢,起始值也可能类似于
null
,这将使比较稍微复杂一些,但可能更容易理解。