Необходимыми условиями корректно определенного рекурсивного метода является существование у метода ветви без рекурсии и разные контексты у каждого рекурсивного вызова. Рассмотрим метод с циклом: cicle do from Init until Exit loop Body end end
Заменим его методом recursive do Init; loop_eqviv end
с вызовом рекурсивного метода: loop_eqviv do if not Exit then Body; loop_eqviv end end
Какие утверждения справедливы относительно корректности такой замены?
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Варианты ответа
у метода loop_eqviv существует не рекурсивная ветвь. Когда выполняется условие выхода, то можно полагать, что выполняется ветвь без рекурсии (пустая в данном случае), завершающая выполнение метода(Верный ответ)
контекст у рекурсивного метода меняется автоматически
контекст каждого вызова будет меняться только при выполнении условий, предполагаемых по умолчанию для этой схемы замены цикла рекурсией:
такая замена некорректна, поскольку не выполняется необходимое условие изменения контекста при каждом вызове рекурсивного метода
завершаемость метода cicle гарантирует завершаемость метода loop_eqviv(Верный ответ)
такая замена некорректна, поскольку не выполняется необходимое условие существования у рекурсивного метода не рекурсивной ветви