После долгого поиска в google я не мог найти ясного ответа на этот вопрос: В Prolog делать рекурсию самостоятельно легко. Моя основная проблема заключается в понимании, где разместить аккумуляторы и счетчики. Ниже приведен пример:Рекурсивный поиск & Аккумуляторы и счетчики в Прологе
nXlist(N,X,[X|T]):-
N \=0,
N1 is N-1,
nXList(N1,X,T).
nXList(0,_,[]).
media([X|L], N, Soma):-
media(L, N1, Soma1),
N is N1 + 1,
Soma is Soma1 + X.
media([], 0, 0).
В первом примере я использовал счетчик ПЕРЕД рекурсии, но во втором примере я использую его ПОСЛЕ. Причина, по которой я это сделал, - это вызванная попытка и увидеть причину, по которой я действительно не могу понять, почему иногда бывает до и иногда после ...
Typo-alert: После того, как вы напишите 'nXlist', а затем' nXList'. – false
Эти трудности с низкоуровневыми арифметическими предикатами чрезвычайно распространены среди новичков и почти непреодолимы для подавляющего большинства начинающих программистов. Я настоятельно рекомендую вам обратиться за советом @ false и использовать ** ограничения ** вместо таких модерируемых предикатов. Ограничения позволяют вам свободно размещать цели в любом месте, которое вам нравится, до или после других целей. У вас будет достаточно времени, чтобы беспокоиться об оперативных соображениях позже. Еще лучше, используя ограничения, вы можете сами * попробовать его * и посмотреть, как разные настройки целей влияют на производительность вашей программы! – mat