Функция Аккермана задача - Prolog

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

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

Функция Аккермана Ak(0,N) = N + 1 Ak(M,0) = Ak(M-1,1) Ak(M,N) = Ak(M-1),Ak(M,N-1) Нужно реализовать её в прологе. Вроде бы программу написал частично работает только слишком большие числа не выводит, пишет что стек переполнен, как избежать этой ошибки, чтоб оно правильно выводило! Исходный код:
Листинг программы
  1. domains
  2. i=integer
  3. predicates
  4. nondeterm ack(i,i,i)
  5. nondeterm vvod(i,i,i)
  6. nondeterm vvod1
  7. clauses
  8. vvod1:-write("vvesti M,N"),nl.
  9. vvod(M,N,Val):-readint(M),nl,readint(N),nl,ack(M,N,Val).
  10. ack(0,N,Val):- Val=N + 1.
  11. ack(M,0,Val) :- M > 0, M1=M-1, ack(M1,1,Val).
  12. ack(M,N,Val) :- M > 0, N > 0, M1=M-1, N1=N-1, ack(M,N1,Val1),ack(M1,Val1,Val).
  13. goal
  14. vvod1,vvod(M,N,Val).

Решение задачи: «Функция Аккермана задача»

textual
Листинг программы
  1. run():-
  2.     write(аркмен(3,6)),
  3. ***_=readchar().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

5   голосов , оценка 3.2 из 5

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

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

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