Рассмотрим, что n = s (s (... s (0) ...)) (просто n = s^n (0)). Как написать программу, вычисляющую деление двух целых чисел? Я имею в виду s^(n // m) (это определение деления). Есть идеи? Например, если бы мы имели вопрос:Деление двух целых чисел альтернативным способом
?-divide(s(s(s(s(0)))),s(0),D).
я написал следующий код:
nat(0).
nat(s(X)) :- nat(X).
divide(0,_,D) :- D is 0.
divide(s(X),s(Y),D) :- divide(X,Y,D).
Что вы имеете в виду именно деление? Вы можете использовать умножение, см. Выше тег! – false
Я имею в виду, что я хочу выполнить разделение 4 и 1, чтобы дать мне 4. @false –
Это не интересный случай. Что относительно 'divide (s (s (s (s (0)))), s (s (0)), D)'? – false