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