• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Mógłby ktoś napisać algorytm/ kod w javie na wykonanie silnii i ciągu Fibonacciego rekurencyjnie?

VPS Starter Arubacloud
0 głosów
545 wizyt
pytanie zadane 20 listopada 2015 w Java przez uczeń1998 Obywatel (1,930 p.)
akurat stosowanie rekurencji to moja słaba strona, nie używałem jej prawie wgl... mógłby ktoś przybliżyć temat, jak jej używać na przykładach silni i rekurencji oraz kiedy ją stosować a kiedy nie? (bo jak wiadomo jest wolniejsza od Iteracji) :)

2 odpowiedzi

+1 głos
odpowiedź 20 listopada 2015 przez Michał628496 Pasjonat (17,340 p.)
edycja 20 listopada 2015 przez Michał628496

Rekurencja polega na odwoływaniu się funkcji do samej siebie.

 

Silnia rekurencyjnie:


public static int silnia(int n)
{
if(n==0)
{
return 1;
}
else
{
return n*silnia(n-1);
}
}

 

 

+1 głos
odpowiedź 20 listopada 2015 przez Porcupine Nałogowiec (31,560 p.)
Ogólnie rozwiązania rekurencyjnego MOŻNA użyć wtedy, gdy problem możesz rozdzielić w ten sposób, że do jego rozwiązania użyjesz wyników dla tego samego problemu tylko dla mniejszych danych. Tak jak w przykładach, o których napisałeś:

Silnia - masz policzyć n! no to możesz to zrobić licząc (n-1)! i mnożąc razy n, (n-1)! z kolei to (n-1) razy i znowu (n-2)! czyli to samo dla mniejszego n. Warunkiem końca rekurencji będzie n = 1, bo 1! = 1.

Fibbonacci - Korzystasz z tego, że Fn = F(n-1) + F(n-2) rozbijając na mniejsze problemy no i wiesz, że F0 = 0 i F1 = 1

Pytanie kiedy NALEŻY użyć rozwiązania rekurencyjnego... Otóż, tak jak napisałeś, będzie ono zawsze wolniejsze od iteracji, ponieważ tworzenie kopii zmiennych i wywoływania zajmują trochę czasu. Odpowiedź jest taka, że rekurencje stosujemy wtedy, kiedy rozwiązanie za jej pomocą jest istotnie prostsze od rozwiązania klasycznego na pętlach. Przykłady, które podałeś czyli Silnia i Fibbonacci są antyprzykładami stosowania rekurencji tzn. istnieją na nie bardzo proste rozwiązania właśnie za pomocą pętli.

Pozdrawiam,

Podobne pytania

0 głosów
1 odpowiedź 209 wizyt
pytanie zadane 30 października 2015 w Java przez uczeń1998 Obywatel (1,930 p.)
0 głosów
3 odpowiedzi 456 wizyt

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...