На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 2 / Рекурсивные программы Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Рекурсивные программы

Третий случай использования отдельных областей данных происходит тогда, когда программе необходимо вызвать саму себя. Это является общим средством решения проблем и носит название "рекурсия". Хорошим примером этого механизма является функция вычисления факториала некоторого целого числа. В листинге 2-7 показан пример решения проблемы вычисления факториала. Алгоритм решения не столь элегантен, и не содержит проверку на переполнение при умножении, но он выглядит удовлетворительно для значений N от 1 до 7.



              Листинг 2-7.  Решение проблемы рекурсии для вычисления
                                    факториала
         -----------------------------------------------------------------

         factor  PROC NEAR              ; нахождение факториала числа N
                 cmp  ax,2              ; уже достигнут конец?
                 jne  subfact           ; нет, вычисление (N - 1)!
                 mov  ax,2              ; да, выполнение сначала
                 ret
         subfact:
                 push ax                ; сохранение текущего значения N
                 sub  ax,1              ; получение N - 1
                 call factor            ; запрос (N - 1)!
                 pop  bx                ; восстановление значения N
                 mul  bx                ; N x (N [min]-1)! = N!
                 ret
         factor  ENDP
         -----------------------------------------------------------------

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz