Как численно ограничить рекурсивный цикл? [Visual Prolog]

Узнай цену своей работы

Формулировка задачи:

Делаю лабораторную работу, уже почти закончил, но не получается сделать так чтобы цикл остановился на заданном числе, вот что имеется:
Листинг программы
  1. domains
  2. i = integer
  3. int_lst = i*
  4. predicates
  5. prov(integer)
  6. procces(integer,int_lst)
  7.  
  8. clauses
  9. prov(N):-
  10. (((N mod 10) - ((N div 10) mod 10)) * (((N div 10) mod 10) - (N div 100)) * ((N mod 10) - (N div 100))) >< 0.
  11. procces(106,[]).
  12. procces(N,Rez):-prov(N),
  13. N1 = N + 1,
  14. procces(N1,[N1|RezO]),
  15. Rez = [N|RezO].
  16.  
  17. goal
  18. procces(103,R).
после 106 он уходит дальше 107, 108 и т.д. Кого интересует, задание лабораторной работы: "Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр"

Решение задачи: «Как численно ограничить рекурсивный цикл? [Visual Prolog]»

textual
Листинг программы
  1. prov(N):-
  2.   (((N mod 10) - ((N div 10) mod 10)) * (((N div 10) mod 10) - (N div 100)) * ((N mod 10) - (N div 100))) >< 0.
  3.  
  4. procces(999,[]) :- !.
  5. procces(N, [N|Rest]) :-
  6.   prov(N),
  7.   !,
  8.   N1 = N + 1,
  9.   procces(N1, Rest).
  10. procces(N, Rest):-
  11.   N1 = N + 1,
  12.   procces(N1, Rest).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут