Derekursywacja
Z Wikipedii
Derekursywacja - przemiana algorytmów rekurencyjnych (rekursyjnych) na iteracyjne. Stosuje się ją w celu zwiększenia szybkości działania aplikacji (korzystającej z algorytmów rekurencyjnych) oraz zmniejszenia jej zajętości pamięciowej.
[edytuj] Przykład
Bardzo dobrym przykładem derekursywacji jest wyznaczanie wartości elementu ciągu Fibonacciego. Można go wyznaczyć za pomocą rekursji (przykład w C++):
unsigned long fibonacci( unsigned long n ){
if( n <= 1 ) return 1;
return ( fibonacci( n - 1 ) + fibonacci( n - 2 ) );
}
Okazuje się, że jest to algorytm bardzo niewydajny. Po derekursywacji, otrzymujemy algorytm iteracyjny, który działa zdecydowanie szybciej:
typedef unsigned long TypZmiennej;
typedef double TypWyniku; // w celu "uniknięcia" przepełnienia zmiennej wynikowej
TypWyniku fibonacci( TypZmiennej n ) {
if( n == 0 ) return 0;
TypWyniku a = 0;
TypWyniku b = 1;
for( TypZmiennej i = 0 ; i < ( n -1 ) ; ++i ) {
b = b + a;
a = b - a; // = poprzednia wartość 'b' - nie trzeba pamiętać w osobnej zmiennej
}
return b;
}
| ÅšWIAT 24/7 |
Schwytanie byłego przywódcy Serbów bośniackich Radovana Karadzicia, podróż Baracka Obamy na Bliski Wschód i do Europy oraz Komisja Europejska, która grozi USA w sprawie wiz - to najważniejsze zagraniczne tematy, o których pisaliśmy w ostatnim tygodniu w tvn24.pl.
|
| Piraci porwali 8 obcokrajowców |
W sobotni poranek piraci porwali 8 pracowników kompanii naftowej w delcie Nigru. W ciągu ostatnich 48 godzin już 16 naftowców znalazło się w rękach porywaczy.
|
| Pijana kobieta wymusiła lądowanie samolotu |
26-letnia pijana Brytyjka usiłowała wydostać się z lecącego na wysokości 10 tys. metrów samolotu. Próby otwarcia drzwi skończyły się awaryjnym lądowaniem.
|
| Obama dziękuje Wielkiej Brytanii |
Demokratyczny kandydat na prezydenta USA Barack Obama gości w sobotę w Londynie. Podczas rozmowy z Gordonem Brownem podkreślił "silne i trwałe związki" między USA i Wielką Brytanią.
|
| Karadżić zmieniał tożsamość i podróżował po Europie |
Ukrywający się przez 13 lat były przywódca bośniackich Serbów Radovan Karadżić, co najmniej sześć razy zmienił tożsamość, bywał we Włoszech pod fałszywym nazwiskiem - pisze w sobotę "Corriere della Sera", powołując się na nieoficjalne doniesienia.
|
Schwytanie byłego przywódcy Serbów bośniackich Radovana Karadzicia, podróż Baracka Obamy na Bliski Wschód i do Europy oraz Komisja Europejska, która grozi USA w sprawie wiz - to najważniejsze zagraniczne tematy, o których pisaliśmy w ostatnim tygodniu w tvn24.pl.
W sobotni poranek piraci porwali 8 pracowników kompanii naftowej w delcie Nigru. W ciągu ostatnich 48 godzin już 16 naftowców znalazło się w rękach porywaczy.
26-letnia pijana Brytyjka usiłowała wydostać się z lecącego na wysokości 10 tys. metrów samolotu. Próby otwarcia drzwi skończyły się awaryjnym lądowaniem.
Demokratyczny kandydat na prezydenta USA Barack Obama gości w sobotę w Londynie. Podczas rozmowy z Gordonem Brownem podkreślił "silne i trwałe związki" między USA i Wielką Brytanią.
Ukrywający się przez 13 lat były przywódca bośniackich Serbów Radovan Karadżić, co najmniej sześć razy zmienił tożsamość, bywał we Włoszech pod fałszywym nazwiskiem - pisze w sobotę "Corriere della Sera", powołując się na nieoficjalne doniesienia.