ALG5

ALG5



35


2.4. Niebezpieczeństwa rekurencji

2.4.1.Ciąg Fibonacciego

Naszym pierwszym zadaniem jest napisanie programu, który' liczyłby elementy tzw. ciągu Fibonacciego. Ten dziwoląg matematyczny, używany do wielu różnych i czasami zaskakujących celów, jest definiowany następująco:

W 0)= 1,

M i) = U

ftb(n) = f(n -1) + fib{n) gdzie n> 2

Zaprezentowany niżej program jest niemal dokładnym przetłumaczeniem powyższego wzoru i nie powinien stanowić dla nikogo niespodzianki:

rek3.cpp

unsigned long int fibtint x)

(

if (x<2)

return 1;

else

return fib(x-l)+fib(x-2);

}

Spróbujmy prześledzić dokładnie wywołania rekurencyjne. Nieskomplikowana analiza prowadzi do następującego drzewa:


Rys. 2 - 3.

Obliczanie fib(4)

Każde „zacieńiowane” wyrażenie stanowi problem elementarny; problem o rozmiarze n>2 zostaje „rozbity" na dwa problemy o mniejszym stopniu skomplikowania: n-i i n-2.

Skąd się jednak wziął pesymistyczny tytuł tego podrozdziału? Przypatrzmy się dokładniej rysunkowi 2-3. Już w pierwszej chwili można dostrzec, że znaczna część obliczeń jest wykonywana więcej niż jeden raz (np. cała gałąź zaczynająca się od Jih(2) jest wręcz zdublowana!). Funkcja.///) nie ma żadnej możliwości, aby to „zauważyć”1, w końcu jest to tylko program, który wykonuje to, co mu

Jeśli można sobie pozwolić na tego typu personifikację...


Wyszukiwarka

Podobne podstrony:
ALG5 3.7. Analiza programów rekurencyjnych 75 otrzymując w efekcie: =26„_, +3log, 3} _ frównanie li
ALG5 3.4. Przykład 3: Wpadamy w pułapkę 657«)-/t(l + N + Nt[i]). T{n) ~ max(A AV[/]). Początek jest
OCHRONA ZDROWIA Obecnie naszym najważniejszym zadaniem jest zabezpieczenie Szpitala Matki Bożej
54318 zdj7 Ciąg Fibonacciego - obliczanie Dana jest relacja rekurencyjna F(n) •F(n) = F(n-1) + F(n-
Ciąg Fibonacciego - ciąg liczb naturalnych określony rekurencyjnie w sposób następujący: Pierwszy wy
ALG7 2.4. Niebezpieczeństwa rekurencji 37 return (x-10); else return MacCarthy(MacCarthy(x111}); 1
ALG5 2.7. Myślenie rekurencyjne 45 Przypadkiem elementarnym będzie tutaj narysowanie jednej pary kw
ALG5 Rozdział 6Derekursywacja Podjęcie tematu przekształcania algorytmów rekurencyjnych na ich post
L3. Projektowanie i realizacja programów w języku C z zastosowaniem rekurencji. Liczby Fibonacciego.
5 Rekurencja 115 Rekurencja Ciąg liczbowy o wartościach rzeczywistych to funkcja a : N —* R. Ciąg li
wsk5 35 Obsługa techniczna motocykli Szczelinomicrzcm o grubości 0.2—0.3 mm sprawdzić wielkość prze
P5280053 J^AtEMATYKA iM.nl 5© . ĆWICZENift 6// Cl Ml CIĄG, fcj iuubdci oUtefifoua, j^io9z*z LU- *b
sz t5 35 35 Partner: krok do przodu lewą nogą. Partnerka: krok u> tył prawą nogą. Krok podstawow
WSiP5a 35 PODSTAWY BAZ DANYCH Podczas wyznaczania zależności funkcyjnych należy brać pod uwagę nie
5 35 NIEPRAWIDŁOWOŚCI W DZIAŁANIU (ciąg dalszy) Osprzęt elektryczny PRZYCZYNY SPOSÓB
DSCN2047 I i i lii 55 §5 35 59 35 93 1rr • 1 «* CC *

więcej podobnych podstron