Рекурсивная сумма - Prolog
Формулировка задачи:
Язык: Swi Prolog. Надо сделать сумму так, чтобы прибавлялось по 1.
Немного набросал
Но оно не работает
Что я не так делаю?
Листинг программы
- add(A, B, F) :-
- F = F+1,
- not(A+B = F) -> add(A, B, F).
Листинг программы
- ?- X = 0, add(20, 5, X).
- false
Решение задачи: «Рекурсивная сумма»
textual
Листинг программы
- sub(A,0,A).
- sub(A,B,A1):-B1 is B-1,
- sub(A,B1,A2),
- A1 is A2-1.
Объяснение кода листинга программы
В данном коде рекурсивная функция sub вычисляет сумму элементов списка A от индекса 0 до индекса B-1.
sub(A,0,A).
- базовый случай, когда индекс равен 0, функция возвращает сам список A.sub(A,B,A1):-B1 is B-1,
- рекурсивный случай, когда индекс не равен 0, функция вызывает саму себя с новыми значениями:sub(A,B1,A2)
- вызов функции sub с новыми значениями:sub(A,B1,A2)
- рекурсивный вызов функции sub с новыми значениями:A1 is A2-1
- новое значение переменной A1, равное текущему значению A2 минус 1.sub(A,B1,A2)
- рекурсивный вызов функции sub с новыми значениями.A1 is A2-1
- новое значение переменной A1, равное текущему значению A2 минус 1.sub(A,B1,A2)
- рекурсивный вызов функции sub с новыми значениями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д