谁能给我解释一下这个算法?


n1 = int(input("Number 1: "))
n2 = int(input("Number 2: "))
n3 = int(input("Number 3: "))
n4 = int(input("Number 4: "))
if n1 > n2 and n1 > n3 and n1 > n4:
greatest = n1
elif n2 > n3 and n2 > n4:
greatest = n2
elif n3 > n4:
greatest = n3
else:
greatest = n4
print(f" {greatest} is the greatest of the numbers.")

为什么我们不比较n2n1,n3n1n2?有人能简单地解释一下这个算法吗?

我们这里是消去数

对于第一条件if n1 > n2 and n1 > n3 and n1 > n4,我们可以说n1是最大的,如果它大于n2, n3, n4。

现在假设这个条件不成立,即在[n4, n2,n3]中存在一个大于n1的数,那么我们只搜索那个数,现在我们只搜索那个范围内的数,即[n2,n3,n4]

所以我们遵循条件2即n2 > n3 and n2 > n4,同样这里如果这个条件成立,我们将得到n2为最大值,但如果它不成立,我们可以说[n3, n4]为给定数

中的最大值所以我们将范围缩小到条件3,即n3>N4,如果成立,我们可以说n3是最大的数,如果不成立,我们可以说N4是所有数中最大的

这个算法正在计算作为输入的4个数中的最大值。

  1. 从4个不同的数字开始输入
  2. 然后它首先检查第一个数字是否大于所有其他数字,如果这是真的,它将greatest分配为第一个数字,如果不是:
  3. 它进入第二种情况,我们检查第二个数字是否大于第三和第四。我们不检查第一个,因为它不大于剩下的数。如果第二个数字大于,则分配greatest第二个数字并打印它,但如果不是,则再次:
  4. 然后检查第三,现在我们有两个较小的数字,即第1和第2。因此,如果第三个数字大于第四个,它将第三个数字分配给greatest,否则它将分配第4个数字,因为所有其他数字都小于第4个数字。

最后输出最大的数字

这个想法是为了消除。

第一个条件if n1 > n2 and n1 > n3 and n1 > n4我们比较n1与n2, n3, n4。如果n1大于所有数,那么我们得到了最大的数(n1),但如果n1不是最大的,那么第一个If失败,所以我们已经排除了n1不是最大的。

同样,我们检查n2是否最大,剩余数(n3, n4)。

等等

原因与计算机处理代码的顺序有关。我们只关心找到最大的数。

  1. if n1 > n2 and n1 > n3 and n1 > n4如果这是真的,那么我们知道n1是最大的数我们已经找到了我们要找的东西,行动将会停止。如果为FALSE,则我们知道n1不是最大的数并进行操作2。
  2. elif n2 > n3 and n2 > n4如果运算到这里,我们已经从1中知道n1不是最大的数,因此我们不再需要将任何数与n1进行比较因为我们关心的是找到最大的数。如果这是真的,那么n2是最大的数。如果这是FALSE,那么我们知道n2不是最大的数3.
  3. elif n3 > n4现在我们知道n1不是最大的数n2也不是最大的数,因此我们知道n3或n4是最大的数,我们所要做的就是比较这两个剩下的数。如果这是真的,那么n3是最大的数字,如果是假的,我们继续到4。
  4. else如果我们到达这个点,还没有为真,那么我们就知道n1不是最大的数,n2不是最大的数,n3也不是最大的数。只有4个数字(n1, n2, n3, n4)所以我们现在知道n4是最大的数字。

一个重要的边注:如果两个数字相同,程序仍然会打印出最大的数字,但会找到该数字的第二个实例,而不是第一个实例。例如:说

n1 = 10
n2 = 5
n3 = 3
n4 = 10

则程序将执行结果:1)FALSE 2) FALSE 3) FALSE 4) TRUE尽管n1也是最大的数,但操作1是假的,因为n1不大于n4(10不大于10)

希望这对你有帮助!

简短回答:

如果你删除一个已知不是最大的数,最大的数不会改变。

。,{3,6,9,1}中最大的也是{6,9,1}中最大的,也就是{9,1}中最大的。

最新更新