Составители:
Рубрика:
94
Sum = Number + Partial_Sum.
Правило рекурсии Сумма ряда 2
sum_series(1,1) :- !. /* сумма ряда */
sum_series(Number,Sum) :-
Next_number = Number - 1,
sum_series(Next_number, Partial_Sum),
Sum = Number + Partial_sum.
Результаты работы этих правил идентичны. Использование отсечения
(!) в Сумме ряда 2 не улучшает работы правила рекурсии. Эти два правила
следует рассматривать как альтернативные варианты.
* Упражнения
4.15. Модифицируйте программу Сумма ряда 2 так, чтобы она
вычисляла сумму следующего ряда целых четных чисел:
S(16) = 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16.
4.16.
Составьте таблицу обрабатываемых значений для преды-
дущей программы, показывающую работу правила рекурсии.
Листинг 4.11
_______________________________________________________________
/* Программа: Факториал */
/* Назначение: Демонстрация использования рекурсии для */
/* процедуры вычисления факториала N! */
/* положительного числа N. Процедура */
/* использует предикат cut для запрещения отката */
/* Пример: 7! = 7*6*5*4*3*2*1 = 5040 */
domains
number, product = integer
predicates
factorial(number, product)
goal
factorial(7,Result),
write(" 7! = ",Result),nl.
clauses
factorial(1,1) :- !.
factorial(Number,Result) :-
Next_number = Number -1,
facto-rial(Next_number,
Partial_factorial),
Result = Number * Partial_factorial.
_______________________________________________________________
Sum = Number + Partial_Sum.
Правило рекурсии Сумма ряда 2
sum_series(1,1) :- !. /* сумма ряда */
sum_series(Number,Sum) :-
Next_number = Number - 1,
sum_series(Next_number, Partial_Sum),
Sum = Number + Partial_sum.
Результаты работы этих правил идентичны. Использование отсечения
(!) в Сумме ряда 2 не улучшает работы правила рекурсии. Эти два правила
следует рассматривать как альтернативные варианты.
* Упражнения
4.15. Модифицируйте программу Сумма ряда 2 так, чтобы она
вычисляла сумму следующего ряда целых четных чисел:
S(16) = 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16.
4.16. Составьте таблицу обрабатываемых значений для преды-
дущей программы, показывающую работу правила рекурсии.
Листинг 4.11
_______________________________________________________________
/* Программа: Факториал */
/* Назначение: Демонстрация использования рекурсии для */
/* процедуры вычисления факториала N! */
/* положительного числа N. Процедура */
/* использует предикат cut для запрещения отката */
/* Пример: 7! = 7*6*5*4*3*2*1 = 5040 */
domains
number, product = integer
predicates
factorial(number, product)
goal
factorial(7,Result),
write(" 7! = ",Result),nl.
clauses
factorial(1,1) :- !.
factorial(Number,Result) :-
Next_number = Number -1,
facto-rial(Next_number,
Partial_factorial),
Result = Number * Partial_factorial.
_______________________________________________________________
94
Страницы
- « первая
- ‹ предыдущая
- …
- 92
- 93
- 94
- 95
- 96
- …
- следующая ›
- последняя »
