Алгоритм действий (нахождение среднего значения элементов списка) - Prolog
Формулировка задачи:
Всем привет.
Срочно нужно узнать алгоритм действий программы. (Т.е что за чем идет, к примеру первое - это вопрос, второе - это строка #2 и т.п)
Что представляет собой каждая строка я знаю, но вот порядок - нет.
Код:
Листинг программы
- sum([], 0).
- sum([H|T], S) :-sum(T, S_T),
- S = S_T + H.
- length([], 0).
- length([_|T], L) :-length(T, L_T),
- L = L_T + 1.
- avg(L,A):-sum(L,S),
- length(L,K),
- A=S/K.
- ?-avg([8,7,3],A),write(A).
Помогите)
Очень срочно :с
Решение задачи: «Алгоритм действий (нахождение среднего значения элементов списка)»
textual
Листинг программы
- sum([], 0). %% сумма эл-тов пустого списка = 0
- sum([H|T], S) :-sum(T, S_T), %% сумма эл-тов списка = сумма эл-тов хвоста
- S = S_T + H. %% плюс голова
- length([], 0). %% длина пустого списка = 0
- length([_|T], L) :-length(T, L_T), %% длина списка = длина хвоста
- L = L_T + 1. %% плюс 1
- avg(L,A):-sum(L,S), %% для списка L сумма=S
- length(L,K), %% длина = K
- A=S/K. %% среднее...
- ?-avg([8,7,3],A),write(A)
Объяснение кода листинга программы
sum([], 0).
- Эта строка кода определяет функциюsum
, которая принимает два аргумента: список и сумму. Если список пуст, то сумма равна 0.sum([H|T], S) :-sum(T, S_T),
- Здесь функцияsum
рекурсивно вызывается для хвоста спискаT
с суммойS_T
. Затем к этой сумме добавляется значение головы спискаH
.length([], 0).
- Эта строка кода определяет функциюlength
, которая принимает два аргумента: список и его длину. Если список пуст, то его длина равна 0.length([_|T], L) :-length(T, L_T),
- Здесь функцияlength
рекурсивно вызывается для хвоста спискаT
с длинойL_T
. Затем к этой длине добавляется 1.avg(L,A):-sum(L,S),
- Эта строка кода определяет функциюavg
, которая принимает два аргумента: списокL
и переменнуюA
. Функцияsum
вызывается для спискаL
с переменнойS
, а функцияlength
вызывается для спискаL
с переменнойK
. Затем вычисляется среднее значение, разделяя сумму на длину.write(A)
- Эта строка кода выводит значение переменнойA
, которое является средним значением списка[8,7,3]
.?-avg([8,7,3],A),write(A)
- Это строка кода, которая вызывает функциюavg
с аргументами[8,7,3]
и переменнойA
. Затем результат выводится с помощью функцииwrite
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д