Форум: "Потрепаться";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
ВнизПролог и выход с цикла Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c