Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.15;
Скачать: 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 вся ветка

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
14-1135258909
Sergey13
2005-12-22 16:41
2006.01.15
"Забавные" цены


6-1128500267
moor38
2005-10-05 12:17
2006.01.15
UDP клиент (согласен баран, но неполучатся)


11-1116581578
CLX
2005-05-20 13:32
2006.01.15
Проблема с KOLOLERichEdit


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


3-1132214943
Левощенко
2005-11-17 11:09
2006.01.15
Объясните мне разницу, по join