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

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

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

Язык: Swi Prolog. Надо сделать сумму так, чтобы прибавлялось по 1. Немного набросал
Листинг программы
  1. add(A, B, F) :-
  2. F = F+1,
  3. not(A+B = F) -> add(A, B, F).
Но оно не работает
Листинг программы
  1. ?- X = 0, add(20, 5, X).
  2. false
Что я не так делаю?

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

textual
Листинг программы
  1. sub(A,0,A).
  2. sub(A,B,A1):-B1 is B-1,
  3.                   sub(A,B1,A2),
  4.                   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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы