IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Рекурсия.Вычисление n-го элемента посл-ти, Вычисление n-го элемента посл-ти чисел Фибоначчи
BSS
сообщение 26.03.2010 1:34
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Серёга

Репутация: -  0  +


Очень нужна рекурсивная реализация для вычисления n-го элемента последовательности чисел Фибоначчи с использованием вспомогательного массива для хранения вычисленных значений
Помогите пожалуйста решить.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
BSS
сообщение 26.03.2010 2:24
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской
Реальное имя: Серёга

Репутация: -  0  +


Вычислить n-й член последовательности Фибоначчи обычным способом и ускоренным (порядка С logn)
---------------
program fibona4i;
var n,k:longint;
procedure f1_usk;
var a11,a12,a22,a21,d11,d12,d21,d22,c11,c12,c21,c22:longint;
begin
a11:=1;
a12:=1;
a21:=1;
a22:=0;
c11:=a11;
c12:=a12;
c21:=a21;
c22:=a22;
while n>2 do begin
dec(n);
d11:=a11*c11+a12*c21;
d12:=a11*c12+a12*c22;
d21:=a21*c11+a22*c21;
d22:=a21*c12+a22*c22;
c11:=d11; c12:=d12; c21:=d21; c22:=d22;
end;
writeln(d11);
end;
procedure f2;
var i,c,fpr,fsl:longint;
begin
fpr:=1;
fsl:=1;
for i:=1 to n-2 do begin
c:=fsl;
fsl:=fpr+fsl;
fpr:=c;
end;
writeln(fsl);
end;
(*Osn proga*)
begin
writeln('Usk sposob=1',' ','Ob sposob=2');
read(k);
writeln('Nomer 4isla');
read(n);
case k of
1: f1_usk;
2: f2;
end;
end.

-----------------------------------
уберите плз лишнее, оставив только рекурсивное решение

М
Тэги!!



Сообщение отредактировано: Lapp - 26.03.2010 6:26
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"