Рекурсивная сумма - Prolog

Узнай цену своей работы

Формулировка задачи:

Язык: Swi Prolog. Надо сделать сумму так, чтобы прибавлялось по 1. Немного набросал
Но оно не работает
Что я не так делаю?

Решение задачи: «Рекурсивная сумма»

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.

  1. sub(A,0,A). - базовый случай, когда индекс равен 0, функция возвращает сам список A.
  2. 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 с новыми значениями.

Оцени полезность:

7   голосов , оценка 4.571 из 5
Похожие ответы