Главная страница
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.48 MB
Время: 0.064 c
2-1135428146
DIS
2005-12-24 15:42
2006.01.15
Webbrowser Перехватить нажатие на элемементе submit


2-1135245919
Вт
2005-12-22 13:05
2006.01.15
Как установить в заданную позицию DBGrid


4-1131370003
Толик
2005-11-07 16:26
2006.01.15
Количество копий отправленого на печать документа


14-1134594311
(CHALING 32)S K i N E R
2005-12-15 00:05
2006.01.15
Голосовой чат по сети!


1-1134372715
OLEGnik
2005-12-12 10:31
2006.01.15
Экспорт функций по Index