При попытке изучить Prolog я наткнулся на хорошее упражнение, которое должно было написать программу, которая отображает номер N-го Фибоначчи. После некоторой работы я получил ее работу, а затем решил посмотреть, могу ли я написать программу, которая отображает ряд чисел Фибоначчи в соответствии с вводом.Последовательность номеров Fibonnaci - Prolog
Например вход:
?- fib_sequence(2,5,Output).
дает выход:
?- Output = [1,1,2,3]
Я с трудом, однако, найти хорошую отправную точку. Это то, что я до сих пор:
fib(0, 0).
fib(1, 1).
fib(N, F) :- X is N - 1, Y is N - 2, fib(X, A), fib(Y, B), F is A + B.
fib_sequence(A,B,R) :- fib(A,Y) , fib(B,Z).
Я знаю, что я должен присвоить значение R, но я не уверен, как назначить несколько значений. Любая помощь приветствуется.
Это не «невозможно сделать в одном предикате», но «невозможно сделать в одном предложении» или «не может быть сделано в одном предложении предиката». Кроме того, не «Первый предикат ...», а «Первое предложение ...» или «Первая предикатная статья ...». То же самое для «Второго предиката». –
@PauloMoura Спасибо за исправления! – dasblinkenlight
Я до сих пор новичок в Prolog, так что это может быть просто моя неопытность, вызывающая эту путаницу, но в вашем коде: 'fib_sequence (A, B, [H | T])' почему вы пытаетесь найти значение Head and Tail Output ? Требуется ли для того, чтобы он работал с последовательностью чисел Фибоначчи? Например, я предположил, что при вводе такого типа, как 'fib_sequence (2,5, Seq), программа затем выдавала' Seq = 1,1,2,3'. – Shrp91