Для устранения этого недостатка преобразуем формулу (5) в форму рекуррентного соотношения, позволяющего на каждом шаге выбора признаков использовать результаты вычислений на предыдущих шагах. С этой целью выделим первый проверяемый признак рассматриваемой

-подпрограммы и обозначим его через

. Цену

проверки этого признака запишем в виде отдельного слагаемого. Средние затраты на реализацию

-подпрограммы, начинающейся с проверки признака

, обозначим

. Тогда вместо формулы (5) имеем

или с учетом формул (3.31) и (3.32)

. (8)
В полученном выражении второе слагаемое, стоящее после знака “+”, представляет собой средние затраты на реализацию той части

-подпрограммы, которая содержит область достижимости вершины

. Эта часть получается удалением из

-подпрограммы начальной вершины

с выходящими из нее дугами – исходами проверки

признака

. Вершины, инцидентные удаленным дугам, представляют собой ФС

, получаемые из начального ФС

при различных исходах выполняемой в нем проверки

согласно отображению, то есть

, если

,
где

.
Каждая вершина

(

) с исходящими из нее путями и ее область достижимости составляют часть

-подпрограммы, которую назовем

-подпрограммой (

). Поэтому часть выражения (8), стоящую после знака “+”, можем представить в виде суммы из

слагаемых, каждое из которых соответствует отдельной

-подпрограмме, то есть

, (9)
где

–

-я ветвь, а

– множество всех ветвей

‑подпрограммы.
Вынесем за знак “

”, стоящий в формуле вторым, сомножитель

,
характеризующий вероятность

-го исхода (

) проверки признака

в ФС

. В результате получим

, (10)
где

– вероятность реализации

-й ветви

-подпрограммы.
Ведем обозначение

. (11)
Это выражение, как видно из сопоставления его с формулой (5), определяет средние затраты на реализацию

‑подпрограммы. Подставив его в формулу (10), получим искомое рекуррентное соотношение

. (12)
Вероятность

в этом соотношении вычисляется по формуле (3).
Если при некотором

-м исходе проверки признака

(

) в фазовом состоянии

получается конечное ФС

,

, то в формуле (11) подмножество

становится пустым (в конечном ФС проверки не выполняются), а поэтому принимается

. (13)
В качестве оптимального в ФС

выбирается признак

, удовлетворяющий критерию.
Чтобы реализовать рекуррентную процедуру выбора оптимальных признаков, необходимо прежде всего определить множество

всех промежуточных фазовых состояний, которые могут возникнуть при различных исходах проверок допустимых признаков

. В результате выполнения рекуррентной процедуры выбора оптимальных признаков найдем все необходимые фазовые состояния

и соответствующие им подмножества

допустимых признаков.
Для каждого ФС

выберем из подмножества

оптимальный признак. На первом шаге найдем оптимальные признаки в состояниях

. Очевидно, что при проверке любого признака

из состояния

получаются только конечные состояния

,

, для которых

. Согласно формуле (12) получим

, то есть средние затраты на реализацию

-подпрограммы определяются только ценой проверяемого признака, так как он единственный в данной подпрограмме. Поэтому выберем по критерию в каждом состоянии

самый “дешевый” признак

. Запомнив выбранные признаки и соответствующие им показатели

, перейдем к второму шагу – выбору оптимальных признаков в состояниях

.