Задайте себе вопрос «могу ли я вычислить максимум на лету?», Т. Е. Используя какое-то правило индукции, не сохраняя числа.
Точнее, предположим, что вы вычислили максимум N первых чисел. Если вы вычислите следующий номер, вы можете сначала получить максимум N + 1?
Ответ очевиден да, так как «максимальное число N + 1 первых чисел является наибольшим из N + 1-го числа и максимумом N первых чисел». Другими словами, если новое число больше максимального до сих пор, оно заменяет его.
Также обратите внимание, что «максимум» первого номера - это число.
Следовательно, в псевдокоде,
Maximum= Random()
for i in range(1, 1000000):
R= Random()
if R > Maximum:
Maximum= R
Вы можете использовать несколько более простой вариант, основанный на правиле «максимум без номера обычно наименьшее возможное значение», здесь 0.
Maximum= 0
for i in range(0, 1000000):
R= Random()
if R > Maximum:
Maximum= R
Этот способ мышления представляет важную концепцию программирования: инвариант цикла. Во время выполнения цикла сохраняется следующее условие: «переменная Maximum содержит наибольшее значение среди тех, которые были вычислены до сих пор». Мышление с точки зрения инвариантов помогает вам в разработке алгоритмов.
Просто сохраняйте текущий максимум и изменяйте его, когда вы создаете большее число (храните случайное значение в переменной, при необходимости обновляйте максимум и печатайте его). – Cinnam