Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
zmzmzm
2 / 2 / 0
Регистрация: 24.10.2011
Сообщений: 14
#1

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

13.03.2015, 21:34. Просмотров 682. Ответов 2
Метки нет (Все метки)

Доброго времени суток! Нужна помощь в решении задачи.

Найти n-й член числовой последовательности, которая определяется рекуррентной формулой a1 = 1, a2 = 2, a3 = 3, an+1 = 3an + 2an–1 + an–2.

Вот пример того, как я пытался ее решить:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 вычитать число. К сожалению похожие темы на форуме не смогли мне помочь, совсем. Надеюсь что кто-то отзовется. Заранее спасибо.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2015, 21:34
Ответы с готовыми решениями:

Найти n-й член числовой последовательности, которая определяется рекуррентной формулой a1 = 1, a2 = 2, a3 = 3,
Найти n-й член числовой последовательности, которая определяется рекуррентной...

Найти n-й член числовой последовательности, которая определяется рекуррентной формулой
Пожалуйста, помогите. Желательно решение по-простенькому.Описать методы для...

Найти n-й член числовой последовательности, которая определяется рекуррентной формулой
помогите, пожалуйста Найти n-й член числовой последовательности, которая...

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

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

2
Black Fregat
2401 / 1216 / 330
Регистрация: 31.05.2009
Сообщений: 4,827
14.03.2015, 01:44 #2
Если править Вашу программу "в лоб", то умножать на коэффициенты нужно не индексы, а значения:
Prolog
1
2
3
4
5
   pos(N,P):- 
    N1 = N-1, pos(N1,P1),
    N2 = N-2, pos(N2,P2),
    N3 = N-3, pos(N3,P3), 
    P = 3*P1 + 2*P2 + P3.
Цитата Сообщение от zmzmzm Посмотреть сообщение
Проблема заключается в том, что я не знаю как из индекса n вычитать число.
Вот совершенно не понял, о чём это. Вы в строках 8-10 благополучно вычитаете из индекса число. В чём проблема?

Проблема в другом: глубина рекурсии при таком способе вычислений будет просто зашкаливать. Не так, как в функции Аккермана, конечно, но весьма ощутимо. Нужно делать как-то так:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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).
1
zmzmzm
2 / 2 / 0
Регистрация: 24.10.2011
Сообщений: 14
14.03.2015, 09:48  [ТС] #3
Black Fregat, спасибо вам за помощь! Действительно, с индексами я что-то напутал, все вычитает. Ваш вариант выглядит лучше.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2015, 09:48

Вычислить n-ый член последовательности, заданной рекуррентной формулой (рекурсия/итерация)
нужно было написать прогу с рекурсией и без, считающую n-ый член...

Рекурсия. Сформировать массив X(N), N-й член которого определяется формулой X(N) =1/n!
Сформировать массив X(N), N-й член которого определяется формулой X(N) =1/n!...

Для числовой последовательности, общий член которой задается формулой
Здравствуйте. Решил первую часть задания, помогите со второй частью, пожалуйста.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru