ďťż

Ładny brzuch

Proszę Was, abyście wytłumaczyli mi interacyjny sposób oblicznia ciągu Fibonacciego... Mam książkę o programowaniu, jednak nie mogę dojść co i jak...



po prostu tworzysz tablice do ktorej wrzucasz kolejne wyniki w kolejnych przebiegach petli
w[0]=0 w[1]=1 w[2]=w[1]+w[0] w[3]=w[2]+w[1] itd.

Pierwsze dwa wyrazy ciagu to jedynki, nastepne tworzy sie przez dodanie do siebie dwoch poprzednich, zeby to obliczyc iteracyjnie wystarczy prosta petla, to nie jest trudne powinienes sie szybko polapac jesli to masz w ksiazce.

Chyba źle napisałem...
Mam algorytm, a dokłądnie to kod programu:
var N, I : Byte; Poprzedni, Przedpoprzedni, Pomoc : Longint; begin write ('Podaj numer wyrazu ciagu do wyliczenia: '); readln (N); if (N<0) then writeln ('Nie mozna policzyc ', N, ' wyrazu ciagu Fibonacciego.') else if (N=0) then writeln ('F(', N, ')=0') else if (N=1) then writeln ('F(', N, ')=1') else begin Przedpoprzedni := 0; Poprzedni := 1; for I := 2 to N do begin Pomoc := Przedpoprzedni; Przedpoprzedni := Poprzedni; Poprzedni := Poprzedni + Pomoc; end; writeln ('F(', N, ')=', Poprzedni) end; readln; end.
Jest to napisane na podstawie tego:

[...]Wystarczy liczyć kolejne wartości dla liczb od 2 aż do szukanej i pamiętac zawsze tylko ostatnie dwa wyniki. Ich suma stanie się za każdym razem nową wartością i do kolejnego przebiegu przyjmujemy włąśnie ją i większą z poprzednich dwóch.[...]

Jak to prościej wytłumaczyć (na przykładzie)?

PS. W szczególnoście o te poprzednie i przedpoprzednie mi chodzi...

np. chce obliczyć F(4) korzystająz z cytatu zamieszczonego poniżej...

[...]Wystarczy liczyć kolejne wartości dla liczb od 2 aż do szukanej i pamiętac zawsze tylko ostatnie dwa wyniki. Ich suma stanie się za każdym razem nową wartością i do kolejnego przebiegu przyjmujemy włąśnie ją i większą z poprzednich dwóch.[...]
F(4)=F(3)+F(2)=.....
F(3)=F(2)+F(1)=.....
F(2)=F(1)+F(0)=.....
Które wyniki?
Użytkownik rys.marcin edytował ten post 21 lipiec 2006, 13:18


najprosciej to zrobic tak:
int tablica; [nie pamietam jak sie definiuje w pascalu :P ] tablica[0]:=0; tablica[1]:=1; for i:=2 to N do tablica[i]:=tablica[i-1]+tablica[i-2];
w ten sposob program oblicza i zostawia w pamieci wszystkie kolejne wyniki, ale kod jest bardziej czytelny ;)
palestynczyk1 - pierwszy wyraz ciagu to 0 a nie 1
up - wlasnie f(3) i f(2) dla f(4). po prostu dodajesz 2 ostatnie wyniki.
Użytkownik Deadeye edytował ten post 21 lipiec 2006, 13:22
Twój sposób Deadeye rzeczywiście jest fajny, ale mi chodzi o wytłumaczenie tego co ja mam...
W książce, z której wziąłem ten cytat i kod, sposób ten jest w miare posuwania się do przodu udoskonalany. Więc, aby zrozumieć dalszą część książki muszę umieć podstawy...

a co tam jest skomplikowanego? :blink: cala istota algorytmu jest tutaj:
Przedpoprzedni := 0; Poprzedni := 1; for I := 2 to N do begin Pomoc := Przedpoprzedni; Przedpoprzedni := Poprzedni; Poprzedni := Poprzedni + Pomoc; end;
po prostu w kolejnych przebiegach petli przekladasz wyniki o jeden do tylu, tak ze poprzedni staje sie przedpoprzednim, a poprzedni to wyliczenie sumy dla tego nr (zgodnie z wzorem ze dodaje sie 2 ostatnie wyniki). nie wiem jak mozna to prosciej wytlumaczyc :P


nie wiem jak mozna to prosciej wytlumaczyc :P
Można, odkładając na bok wzory, matematykę i informatykę. Przyjrzyjmy się samej osobie Fibonacciego i jego badaniom nad królikami:

http://matematyka.pl...85,artykul.html
Użytkownik p1101 edytował ten post 21 lipiec 2006, 20:39
Olśnienie!!! Dziękuje Wam wszystkim ;)...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •