Рекурсия: найти n-й член числовой последовательности, которая определяется рекуррентной формулой - Prolog

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

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

Доброго времени суток! Нужна помощь в решении задачи. Найти n-й член числовой последовательности, которая определяется рекуррентной формулой a1 = 1, a2 = 2, a3 = 3, an+1 = 3an + 2an–1 + an–2. Вот пример того, как я пытался ее решить:
Листинг программы
  1. predicates
  2. pos(integer, integer)
  3. clauses
  4. pos(1,1):-!.
  5. pos(2,2):-!.
  6. pos(3,3):-!.
  7. pos(N,P):-
  8. N1 = 3*(N-1), pos(N1,P1),
  9. N2 = 2*(N-2),pos(N2,P2),
  10. N3 = N-3,pos(N3,P3),
  11. P = P1 + P2 + P3.
  12. goal
  13. write("N:"), readint(N),
  14. pos(N,P),
  15. write(P).
Проблема заключается в том, что я не знаю как из индекса n вычитать число. К сожалению похожие темы на форуме не смогли мне помочь, совсем. Надеюсь что кто-то отзовется. Заранее спасибо.

Решение задачи: «Рекурсия: найти n-й член числовой последовательности, которая определяется рекуррентной формулой»

textual
Листинг программы
  1. predicates
  2.    pos(integer, integer)
  3.    pos_accum(integer, integer, integer, integer, integer, integer)
  4. clauses
  5.    pos(1 ,1) :- !.
  6.    pos(2, 2) :- !.
  7.    pos(3, 3) :- !.
  8.    pos(N, P):-
  9.       pos_accum(N, 3, 3, 2, 1, P).
  10.  
  11.    pos_accum(N, N, P, _, _, P) :- !.
  12.    pos_accum(N, K, P1, P2, P3, P) :-
  13.       K1 = K+1,
  14.       P0 = 3*P1 + 2*P2 +P3,
  15.       pos_accum(N, K1, P0, P1, P2, P).

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


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

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

10   голосов , оценка 4.3 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы