Функция Аккермана задача - Prolog
Формулировка задачи:
Функция Аккермана
Ak(0,N) = N + 1
Ak(M,0) = Ak(M-1,1)
Ak(M,N) = Ak(M-1),Ak(M,N-1)
Нужно реализовать её в прологе. Вроде бы программу написал частично работает только слишком большие числа не выводит, пишет что стек переполнен, как избежать этой ошибки, чтоб оно правильно выводило!
Исходный код:
Листинг программы
- domains
- i=integer
- predicates
- nondeterm ack(i,i,i)
- nondeterm vvod(i,i,i)
- nondeterm vvod1
- clauses
- vvod1:-write("vvesti M,N"),nl.
- vvod(M,N,Val):-readint(M),nl,readint(N),nl,ack(M,N,Val).
- ack(0,N,Val):- Val=N + 1.
- ack(M,0,Val) :- M > 0, M1=M-1, ack(M1,1,Val).
- ack(M,N,Val) :- M > 0, N > 0, M1=M-1, N1=N-1, ack(M,N1,Val1),ack(M1,Val1,Val).
- goal
- vvod1,vvod(M,N,Val).
Решение задачи: «Функция Аккермана задача»
textual
Листинг программы
- run():-
- write(аркмен(3,6)),
- ***_=readchar().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д