Вниз
Скачать: CL | DM;

Пролог и выход с цикла   Найти похожие ветки 

← →
Fl@sh ©   (2005-12-21 16:55) [0]

Задали задание на прологе для нахождения n-го числа Фибоначчи
Числа Фибоначчи находятся за правилом: первые 2 числа = 1, а следующие суме двух предидущих. Т.е. 1, 1, 2, 3, 5, 8, 13, 21...

Вот код:

predicates
 fabon(integer, integer)
fabon(integer, integer, integer, integer, integer)

clauses
fabon(N, NewRes) :-
 fabon(N, NewRes, 1, 1, 1).
 fabon(N, Res, I, Res, M) :-
  I <= N and
  ! and
  NewI = I + 1 and
  NewRes = Res + M and
  NewM = NewRes - M and
  write(NewRes, " \n") and
  fabon(N, NewRes, NewI, NewRes, NewM),  
  fail.
 %fabon(N, Res, I, Res, _) :- I > N.


Так вот, как выити с цикла, и чтоб вивело значение?
Пишу в Goal: Fabon(5, X)
Виводит:
2, 3, 5, 8, 13.
И потом No Solution
Как сделать чтоб выводило 1 Solution X = 13???
Раньше Kerk имел дело с этим языком, мож еще кто поможет..


← →
Mike Kouzmine ©   (2005-12-21 17:02) [1]

predicates
fabon(integer, integer)

clauses
fabon(1, 1).
fabon(N, Res):-
   fabon(N - 1, NewRes),  
   Res = N * NewRes.


← →
Mike Kouzmine ©   (2005-12-21 17:24) [2]

Или с проверками

predicates
fabon(integer, integer)

clauses
fabon(N,0) :- N < 0.
fabon(0, 0).
fabon(N, Res):-
  fabon(N - 1, NewRes),  
  Res = N + NewRes.

Можно так

predicates
fabon(integer, integer)

clauses
fabon(N,0) :- N < 0.
fabon(N, Res):-
  fabon(N - 1, NewRes),  
  Res = N + NewRes.


← →
Fl@sh ©   (2005-12-22 19:24) [3]


> fabon(N - 1, NewRes),  

Говорит что тут ошибка, хочет вставлять запитую, после N


← →
Чапаев ©   (2005-12-22 19:28) [4]


> И потом No Solution

Разберись толком, что такое "восклицательный знак". ;-)


← →
Чапаев ©   (2005-12-22 19:30) [5]


> Говорит что тут ошибка, хочет вставлять запитую, после N

M=N-1,
fabon(M,NewRes),...


← →
Fl@sh ©   (2005-12-22 19:38) [6]

! - отмена бектрекинга!!!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
14-1134990696
КаПиБаРа
2005-12-19 14:11
2006.01.15
Посмотрел вчера программу Время


2-1135602857
Fedddor
2005-12-26 16:14
2006.01.15
Подскажите плиз функцию определения дня недели по дате!


2-1135376225
_vasya
2005-12-24 01:17
2006.01.15
Java script и сокеты


4-1131178490
Святослав
2005-11-05 11:14
2006.01.15
Неизвестное програмное исключение OS !!!


14-1135025224
ArtemESC
2005-12-19 23:47
2006.01.15
Словари и оболочки...




   Наверх