Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При реализации рекурсии данные помещаются в стек всякий раз, когда выполняется рекурсивный вызов. Чем больше глубина рекурсии, тем больше требуется стековой памяти. Итеративные программы работают в фиксированном объеме памяти, не зависящем от числа итераций. Итеративные вычисления можно смоделировать, используя в рекурсивных определениях с одним рекурсивным вызовом в правой части дополнительные аргументы-переменные для передачи промежуточных значений. Эти переменные называются накопителями ( аккумуляторами ).
ПРОГРАММА 4.
Итеративное определение факториала (вариант 1).
factorial(N,FactN):- fact(N,FactN,1,1).
fact(N,FactN,I,P):- /* накопитель I - аналог счетчика */
I<N /* накопитель P – промежуточное значение факториала*/
I1 is I+1, /* - значение факториала */
P1 is P*I1,
fact(N,FactN,I1,P1).
fact(N,FactN,N,FactN).
Дата публикования: 2014-12-11; Прочитано: 209 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!