Я собираюсь создать программу на Прологе, которая возвращает список значений из повторения:Рецидив в Прологе
f(1) = 3, f(2) = 2, f(n) = f(n-1) * f(n-2)
Например
rekur(5, S). -> S = [3, 2, 6, 12, 72]
Я пытался решить с помощью:
rekur(2,[3,2]).
rekur(X,[H|T,M]):- X1 is X-1, rekur(X1,[H1,T1,M1], H1 is T*M.
Что было доказано, что оно полностью ошибочно. Не могли бы вы продемонстрировать решение для этого примера? Объяснение очень ценится. Я обнаружил, что понятия не имею, как работает Prolog. Спасибо за помощь.
'[H | T, M]' не имеет смысла, и, вероятно, следует '[X, Y | T]' или что-то подобное, если вы пытаетесь показать список как минимум двух элементов 'X',' Y' и «rest» 'T'. У вас также есть как минимум еще одна опечатка в вашем коде (отсутствует правильный параграф на вызове 'rekur'). Не могли бы вы обновить свой вопрос с помощью точного кода, который вы пробовали? – lurker