Рекурсия: найти n-й член числовой последовательности, которая определяется рекуррентной формулой - Prolog
Формулировка задачи:
Доброго времени суток! Нужна помощь в решении задачи.
Найти n-й член числовой последовательности, которая определяется рекуррентной формулой a1 = 1, a2 = 2, a3 = 3, an+1 = 3an + 2an–1 + an–2.
Вот пример того, как я пытался ее решить:
Проблема заключается в том, что я не знаю как из индекса n вычитать число. К сожалению похожие темы на форуме не смогли мне помочь, совсем. Надеюсь что кто-то отзовется. Заранее спасибо.
Листинг программы
- predicates
- pos(integer, integer)
- clauses
- pos(1,1):-!.
- pos(2,2):-!.
- pos(3,3):-!.
- pos(N,P):-
- N1 = 3*(N-1), pos(N1,P1),
- N2 = 2*(N-2),pos(N2,P2),
- N3 = N-3,pos(N3,P3),
- P = P1 + P2 + P3.
- goal
- write("N:"), readint(N),
- pos(N,P),
- write(P).
Решение задачи: «Рекурсия: найти n-й член числовой последовательности, которая определяется рекуррентной формулой»
textual
Листинг программы
- predicates
- pos(integer, integer)
- pos_accum(integer, integer, integer, integer, integer, integer)
- clauses
- pos(1 ,1) :- !.
- pos(2, 2) :- !.
- pos(3, 3) :- !.
- pos(N, P):-
- pos_accum(N, 3, 3, 2, 1, P).
- pos_accum(N, N, P, _, _, P) :- !.
- pos_accum(N, K, P1, P2, P3, P) :-
- K1 = K+1,
- P0 = 3*P1 + 2*P2 +P3,
- pos_accum(N, K1, P0, P1, P2, P).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д