Я пытаюсь написать диапазон предикатов \ 3, который принимает три параметра: первый - это начало, второе - конец и возвращает сгенерированный список в третьем аргументе.Рекурсия в прологе - ошибка в базовом футляре
E.g позвонил (1,5, L).
L = [1, 2, 3, 4, 5]
Я использовал этот код
range(E,E,[E]).
range(S,E,L):-
S1 is S + 1,
range(S1,E,[S|L]).
Но это не работает, когда я использовал команду трассировки, чтобы узнать, где ошибку я признал, что базовый случай бесполезно, я также попробовал зеленый вырезать ! в базовом случае, но он не работает в диапазоне (E, E, [E]),!.
Таким образом, если кто-нибудь знает, что это проблема, пожалуйста, помогите мне
спасибо большое Mr @Capellic это сработало, но когда я нажимаю; после правильного ответа я получил это сообщение «из локального стека», это правда. –
* Теперь * вы можете исследовать разрез. Попытайтесь решить проблему. – CapelliC
Я получил его, я должен добавить! разрезать в последнем диапазоне (S, E, [S | L]): - S1 - это S + 1, диапазон (S1, E, L),!. –