Алгоритм действий (нахождение среднего значения элементов списка) - Prolog
Формулировка задачи:
Всем привет.
Срочно нужно узнать алгоритм действий программы. (Т.е что за чем идет, к примеру первое - это вопрос, второе - это строка #2 и т.п)
Что представляет собой каждая строка я знаю, но вот порядок - нет.
Код:
Помогите)
Очень срочно :с
Решение задачи: «Алгоритм действий (нахождение среднего значения элементов списка)»
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.