Составители:
Рубрика:
93
4.13. Модифицируйте программу Сумма ряда 1 так, чтобы ее резуль-
татом была сумма следующего ряда нечетных чисел:
S(15) = 1 + 3 + 5 + . . . + 15
4.14. Постройте таблицу обрабатываемых значений для программы
Сумма ряда 1, показывающую работу правила рекурсии.
Листинг 4.10
_______________________________________________________
/* Программа: Сумма ряда 2 */
/* Назначение: Демонстрация использования рекурсивного */
/* предиката для нахождения суммы ряда S, */
/* где S(N), где N положительное целое число */
/* Пример: S(7) = 7+6+5+4+3+2+1 = 28 */
domains
number, sum = integer
predicates
sum_series(number, sum)
goal
sum_series(7,Sum),
write("Сумма ряда:"),nl,nl,
write(" S(7) = ", Sum), nl.
clauses
sum_series(1,1) :- !. /* сумма ряда */
sum_series(Number,Sum) :-
Next_number = Number - 1, s
um_series(Next_number,
Partial_Sum),
Sum = Number + Partial_sum.
______________________________________________________
Программа Сумма ряда 2 (листинг 4.10) является модификацией про-
граммы Сумма ряда 1. Модификация выполнена посредством
удаления условия выхода Number > 0 и введения правила sum_series(1,1) :- !.
вместо sum_series(1,1).
Сравним вид правила рекурсии в предыдущей программе с модифици-
рованным правилом рекурсии в
программе Сумма ряда 2:
Правило рекурсии Сумма ряда 1
sum_series(1,1). /* сумма ряда */
sum_series(Number,Sum) :-
Number > 0,
Next_number = Number - 1,
sum_series(Next_number, Partial_Sum),
4.13. Модифицируйте программу Сумма ряда 1 так, чтобы ее резуль-
татом была сумма следующего ряда нечетных чисел:
S(15) = 1 + 3 + 5 + . . . + 15
4.14. Постройте таблицу обрабатываемых значений для программы
Сумма ряда 1, показывающую работу правила рекурсии.
Листинг 4.10
_______________________________________________________
/* Программа: Сумма ряда 2 */
/* Назначение: Демонстрация использования рекурсивного */
/* предиката для нахождения суммы ряда S, */
/* где S(N), где N положительное целое число */
/* Пример: S(7) = 7+6+5+4+3+2+1 = 28 */
domains
number, sum = integer
predicates
sum_series(number, sum)
goal
sum_series(7,Sum),
write("Сумма ряда:"),nl,nl,
write(" S(7) = ", Sum), nl.
clauses
sum_series(1,1) :- !. /* сумма ряда */
sum_series(Number,Sum) :-
Next_number = Number - 1, s
um_series(Next_number,
Partial_Sum),
Sum = Number + Partial_sum.
______________________________________________________
Программа Сумма ряда 2 (листинг 4.10) является модификацией про-
граммы Сумма ряда 1. Модификация выполнена посредством
удаления условия выхода Number > 0 и введения правила sum_series(1,1) :- !.
вместо sum_series(1,1).
Сравним вид правила рекурсии в предыдущей программе с модифици-
рованным правилом рекурсии в программе Сумма ряда 2:
Правило рекурсии Сумма ряда 1
sum_series(1,1). /* сумма ряда */
sum_series(Number,Sum) :-
Number > 0,
Next_number = Number - 1,
sum_series(Next_number, Partial_Sum),
93
Страницы
- « первая
- ‹ предыдущая
- …
- 91
- 92
- 93
- 94
- 95
- …
- следующая ›
- последняя »
