Funkcje 
Rekursja

Wewnątrz ciała funkcji może wystąpić instrukcja wywołania tej samej funkcji. Mówimy wtedy o wywołaniu rekurencyjnym funkcji, albo o rekursji.

int funckja(int x, int y)
{
  if(warunekKoncaRekursji)
  {
    return wartoscPoczatkowaRekursji;
  }
 
  // rób coś
  .... 
 
  // wywołaj rekurencyjnie
  funkcja(a,b);
 
  // dowolną ilość razy
  funkcja(c,d);
 
}

Aby nie doszło do zapętlenia programu, funkcja rekurencyjna musi zawierać wyrażenie warunkowe pozwalające na przerwanie rekurencyjnych wywołań.

  • Zaletą rekursji jest prostota zapisu i relatywna łatwość analizy poprawności kodu opartego o rekursję
  • Z tego powodu rekursja jest podstawowym narzędziem stosowanym w programowaniu funkcjonalnym
  • Wadą rekurencji jest stosunkowo wolne wykonanie spowodowane narzutem związanym z częstym wywoływaniem funkcji oraz duże obciążenie pamięci.

Przykład - wyliczanie symbolu Newtona za pomocą rekursji.

Materiały przeznaczone wyłącznie dla studentów
Instytutu Informatyki i Matematyki Komputerowej UJ
Daniel Wilczak