2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите с фибоначи
Сообщение24.06.2010, 12:49 
Помогите решить пожалуйста

Описать нерекурентную функцию Fib(N) целого типа, вычисляющую N-е число Фибоначчи F(N) по формуле: F(1)=F(2), F(K)=F(K-2)+F(K-1), K=3,4,.... С помощью этой функциивычислить 10 чисел Фибонначи с указанными номерами.

Вот наработа

program fib;
Const N=5;
var i, kol :integer;

Function Fib(n:integer):integer;
begin
if (n=1) or (n=2) then Fib:=1
else begin
Fib :=Fib(n-1) + Fib(n-2);

end;
kol:=kol+1;
end;

BEGIN

for i:= 1 to N do begin
kol :=0;
read(i);
Write(i, ' chislo Fibonachi ' , Fib(i));
writeln(' Kolichestvovo vizovov' , kol);
end;
END.

 
 
 
 Re: Помогите с фибоначи
Сообщение24.06.2010, 13:12 
Аватара пользователя
У Вас же в условии сказано
stasleiba в сообщении #334511 писал(а):
Описать нерекурентную функцию
Другими словами, надо разработать итерационный алгоритм вычисления числа Фибоначчи.

 i  Дубли темы удалены

Для оформления кода программы пользуйтесь тегом syntax: topic26708.html

 
 
 
 Re: Помогите с фибоначи
Сообщение24.06.2010, 13:58 
Используй формулу Бине
$f(n)=\frac {\left (\frac {1+\sqrt 5}{2}\right )^n-\left (\frac {1-\sqrt 5}{2}\right )^n}{\sqrt 5}$.

 
 
 
 Re: Помогите с фибоначи
Сообщение24.06.2010, 15:08 
Цикл, где на кажом шаге используются значения, сохраненные с предыдущих шагов.

 
 
 
 Re: Помогите с фибоначи
Сообщение27.06.2010, 08:58 
function Fib(N: integer): integer;
label ToEnd;
var f1,f2,f3, i, res: integer;
begin
if n=1 then
begin
res:=0;
goto ToEnd;
end;
if n=2 then
begin
res:=1;
goto ToEnd;
end;
f1:=0;
f2:=1;
for i:=2 to n do
begin
res:=f1+f2;
f1:=f2;
f2:=res;
end;
ToEnd:
fib:=res;
end;

 
 
 
 Re: Помогите с фибоначи
Сообщение27.06.2010, 10:45 
Аватара пользователя
 !  coolmarat, предупреждение за размещения решения простой учебной задачи.

Читайте Правила форума

 
 
 
 Re: Помогите с фибоначи
Сообщение27.06.2010, 15:06 
coolmarat в сообщении #335516 писал(а):
if n=1 then
begin
res:=0;
goto ToEnd;
end;
if n=2 then
begin
res:=1;
goto ToEnd;
end;

Это неграмотно. Надо так:

Используется синтаксис Pascal
if (n=1) or (n=2) then begin
    fib:=1;    exit;    end;

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group