Получение списка чисел Фибоначчи - Prolog

Узнай цену своей работы

Формулировка задачи:

Что то не выходит...

Решение задачи: «Получение списка чисел Фибоначчи»

textual
Листинг программы
domains
int=integer
intl=int*
 
predicates
app(intl,intl,intl)
last2(intl,intl)
fiblist(int,intl)
 
clauses
 
app([],X,X).
app([H|T],X,[H|Q]):-app(T,X,Q).
 
last2([X,Y],[X,Y]).
last2([_|T],[X,Y]):- last2(T,[X,Y]).
 
fiblist(1,[1]) :- !.
fiblist(2,[1,1]) :- !.
fiblist(N,L) :- N1=N-1, fiblist(N1,L1), last2(L1,[X,Y]), Z=X+Y, app(L1,[Z],L).
 
goal
fiblist(7,Z),write(Z),nl.

Объяснение кода листинга программы

В этом коде используется язык программирования Prolog. Он решает задачу генерации последовательности чисел Фибоначчи. Код начинается с определения трёх типов данных: int (целое число), intl (целое число, управляющее от 0 до n), и списка, представленного как intl (int*). Затем определены три предиката:

  1. app(intl, intl, intl) - этот предикат добавляет элемент в начало списка.
  2. last2(intl, intl) - этот предикат удаляет последний элемент из списка.
  3. fiblist(int, intl) - этот предикат генерирует список чисел Фибоначчи. Клауза app([],X,X) утверждает, что если список пуст, то добавление любого элемента в начало списка не изменит его. Клауза app([H|T],X,[H|Q]) говорит, что если в списке есть по крайней мере один элемент, то можно добавить новый элемент в начало списка, оставив остальные элементы без изменений. Клауза last2([X,Y],[X,Y]) утверждает, что если список содержит ровно два элемента, то это его последние два элемента. Клауза last2([_|T],[X,Y]) говорит, что если в списке есть более двух элементов, то можно удалить последний элемент, оставив остальные элементы без изменений. Клауза fiblist(1,[1]) утверждает, что список чисел Фибоначчи для n=1 состоит из одного элемента 1. Клауза fiblist(2,[1,1]) говорит, что список чисел Фибоначчи для n=2 состоит из двух элементов 1 и 1. Клауза fiblist(N,L) :- N1=N-1, fiblist(N1,L1), last2(L1,[X,Y]), Z=X+Y, app(L1,[Z],L). генерирует список чисел Фибоначчи для n=N. Она использует рекурсию, чтобы вычислить число Фибоначчи для n-1, затем добавляет два последних элемента этого списка (представленных как [X,Y]) к новому списку, и добавляет новый элемент (Z=X+Y) в начало нового списка. В конце кода есть цель fiblist(7,Z),write(Z),nl, которая генерирует список чисел Фибоначчи для n=7 и выводит его на консоль.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы