最大不在所有之中
如果我们不需要在所有输入的数字中找到最大值(最小值),而只是在满足特定条件的数字中找到最大值(最小值),那么我们必须考虑到这样一个事实,即我们取的第一个数字作为最大值的初始值(最低)并不总能满足我们的要求。
例如,如果我们正在寻找最大负数,那么数据集为:
\(\{5, -2, 4, 2, -1, -3\}\ ) 我们将得到最大值初始值中的数字5,它是正数并且大于任何负数。因此条件
X > M
永远是 false。
因此,仅在上一题的算法中添加一个负数检查是不够的,还需要考虑到第一个数字可能不满足要求的条件(在这种情况下,为负数) ).
您可以通过在循环内添加以下条件来解决此问题:
伪代码
<前>
如果 X 为负,则
如果 M >= 0 或 M <; X,那么
M=X
在指定的代码中,
M >= 0
条件允许您执行
M = X
操作,即使
M
变量最初包含一个明显大于其余值的值(在我们的示例中,该值等于 5)。
我们还注意到,如果已知数字的范围,则可以将指定范围内的最小(最大)数字作为最大(最小)值的初始值。