Методы Кристобаля Хунты: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 127:
Схематически можно изобразить такой способ работы на следующем рисунке. То, что за колючей проволокой, по определению считается плохим и отстреливается.
 
==Третий способ: работать неправильно==
Поскольку неразрешимую задачу всё равно правильно не решишь, то нужно проанализировать, какие же ошибки вреднее, и, если уж делать, то безвредные. В предыдущих разделах предполагалось, что безвреднее не найти зацикливание, чем найти зацикливание в работающей программе. Но, порою, лучше выдать лишнее предупреждение, чем пропустить заведомо плохой алгоритм. Далее, порою можно допускать ошибки и в две стороны, если цена ошибки не очень высока и в большинстве случаев программа все равно работает правильно. Схематически можно изобразить такой способ работы на следующем рисунке. Здесь граница проведена попроще, но возле её могут быть ошибки в две стороны.
Поскольку неразрешимую задачу всё равно правильно не решишь, то нужно
 
Например, автор пользовался простым, но неправильным, алгоритмом быстрого нахождения возможного (формального либо фактического) зацикливания в программах студентов.
проанализировать, какие же ошибки
вреднее, и, если уж делать, то безвредные. В предыдущих разделах предполагалось,
 
Если цикл встречается внутри рекурсии, либо рекурсия внутри цикла, то процедура<br> написана некорректно.
что
безвреднее не найти зацикливание, чем найти зацикливание в работающей программе.
Но, порою, лучше выдать лишнее предупреждение, чем пропустить заведомо плохой
 
В подавляющем большинстве случаев это правило действительно указывало на плохо продуманные процедуры, которые, даже если и работали для совсем простых входных данных, разваливались на чуть более сложных. Но иногда такой приём оправдан (лично я советую вам таким приёмом не пользоваться; если хочется скрестить рекурсию и цикл, значит, почти наверняка вы плохо продумали структуры данных либо алгоритм).
алгоритм.
Далее, порою можно допускать ошибки и в две стороны,
если цена ошибки не очень высока и в большинстве случаев программа все равно
 
работает правильно.
Схематически можно изобразить такой способ работы на следующем рисунке. Здесь
 
граница проведена
попроще, но возле её могут быть ошибки в две стороны.
 
Например, автор пользовался простым, но неправильным, алгоритмом быстрого
 
нахождения возможного (формального либо
фактического) зацикливания в программах студентов.
 
 
Если цикл встречается внутри рекурсии, либо рекурсия внутри цикла, то
 
процедура<br> написана некорректно.
 
 
В подавляющем большинстве случаев это правило действительно указывало на плохо
 
продуманные процедуры,
которые, даже если и работали для совсем простых входных данных, разваливались на
 
чуть более сложных.
Но иногда такой приём оправдан
(лично я советую вам таким приёмом не пользоваться; если хочется скрестить
рекурсию и цикл, значит, почти наверняка вы плохо продумали структуры данных либо
 
алгоритм).
 
==Четвёртый способ: работать наугад==