ALG5
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 liALG5 3.4. Przykład 3: Wpadamy w pułapkę 657«)-/t(l + N + Nt[i]). T{n) ~ max(A AV[/]). Początek jestOCHRONA ZDROWIA Obecnie naszym najważniejszym zadaniem jest zabezpieczenie Szpitala Matki Bożej54318 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 wyALG7 2.4. Niebezpieczeństwa rekurencji 37 return (x-10); else return MacCarthy(MacCarthy(x111}); 1ALG5 2.7. Myślenie rekurencyjne 45 Przypadkiem elementarnym będzie tutaj narysowanie jednej pary kwALG5 Rozdział 6Derekursywacja Podjęcie tematu przekształcania algorytmów rekurencyjnych na ich postL3. 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 liwsk5 35 Obsługa techniczna motocykli Szczelinomicrzcm o grubości 0.2—0.3 mm sprawdzić wielkość przeP5280053 J^AtEMATYKA iM.nl 5© . ĆWICZENift 6// Cl Ml CIĄG, fcj iuubdci oUtefifoua, j^io9z*z LU- *bsz t5 35 35 Partner: krok do przodu lewą nogą. Partnerka: krok u> tył prawą nogą. Krok podstawowWSiP5a 35 PODSTAWY BAZ DANYCH Podczas wyznaczania zależności funkcyjnych należy brać pod uwagę nie5 35 NIEPRAWIDŁOWOŚCI W DZIAŁANIU (ciąg dalszy) Osprzęt elektryczny PRZYCZYNY SPOSÓBDSCN2047 I i i lii 55 §5 35 59 35 93 1rr • 1 «* CC *więcej podobnych podstron