TURBO PROLOG. Терёхин В.В. - 91 стр.

UptoLike

Составители: 

91
Листинг 4.9
_______________________________________________________________
/* Программа: Сумма ряда 1 */
/* Назначение: Демонстрация использования рекурсивного */
/* предиката для нахождения суммы S(N) ряда */
/* S, где 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) :-
Number > 0,
Next_number = Number - 1,
sum_series(Next_number, Partial_Sum),
Sum = Number + Partial_Sum.
____________________________________________________________
Программа Сумма ряда 1 (листинг 4.9) использует правило рекурсии
для вычисления суммы ряда целых чисел от 1 до 7:
S(7) = 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28
или
S(7) = 7 + 6 + 5 + 4 + 3 + 2 + 1 = 28
Правило рекурсии программы выполняет вычисления по обычной схе-
ме сложения:
1 Начальное значение
+ 2 Следующее значение
___
3 Частичная сумма
+ 3 Следующее значение
___
6 Частичная сумма
...
Правило рекурсии имеет вид:
sum_series(1,1). /* сумма ряда */
sum_series(Number,Sum) :-
                             Листинг 4.9
_______________________________________________________________
/* Программа: Сумма ряда 1                                   */
/* Назначение: Демонстрация использования рекурсивного */
 /*              предиката для нахождения суммы S(N) ряда */
/*               S, где 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) :-
                       Number > 0,
                       Next_number = Number - 1,
                       sum_series(Next_number, Partial_Sum),
                       Sum = Number + Partial_Sum.
____________________________________________________________

      Программа Сумма ряда 1 (листинг 4.9) использует правило рекурсии
для вычисления суммы ряда целых чисел от 1 до 7:
      S(7) = 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28
или
      S(7) = 7 + 6 + 5 + 4 + 3 + 2 + 1 = 28
      Правило рекурсии программы выполняет вычисления по обычной схе-
ме сложения:
               1    Начальное значение
            +2      Следующее значение
            ___
               3    Частичная сумма
            +3      Следующее значение
            ___
               6    Частичная сумма
             ...
      Правило рекурсии имеет вид:
      sum_series(1,1).                  /* сумма ряда */
      sum_series(Number,Sum) :-


                                                                     91