Wprowadzenie do rekurencji
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 45 z 56.
Rekurencja to technika programowania, w której funkcja wywołuje samą siebie, aby rozwiązać problem. Zamiast używać pętli, funkcje rekurencyjne dzielą złożone problemy na mniejsze, podobne podproblemy, aż dotrą do prostego przypadku, który można rozwiązać bezpośrednio.
Każda funkcja rekurencyjna musi mieć dwa niezbędne elementy. Przypadek bazowy to warunek, który zatrzymuje rekurencję - bez niego funkcja wywoływałaby samą siebie w nieskończoność. Krok rekurencyjny to miejsce, w którym funkcja wywołuje samą siebie ze zmodyfikowanymi parametrami, przybliżając się do przypadku bazowego przy każdym wywołaniu.
Oto prosty przykład odliczania, który demonstruje rekurencję:
void countdown(int n) {
if (n <= 0) { // Przypadek bazowy: zakończ, gdy n osiągnie 0
std::cout << "Done!" << std::endl;
return;
}
std::cout << n << std::endl;
countdown(n - 1); // Krok rekurencyjny: wywołaj z n-1
}Gdy wywołasz countdown(3), wypisze 3, a następnie wywoła countdown(2), które wypisze 2, po czym wywoła countdown(1) i tak dalej, aż osiągnie przypadek bazowy. Każde wywołanie funkcji czeka na zakończenie kolejnego wywołania, zanim samo się zakończy, tworząc łańcuch wywołań, który ostatecznie rozwija się z powrotem do pierwotnego wywołującego.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami4Mapy (pary klucz–wartość)
Poznajemy std::mapTworzenie mapyOdczytywanie i modyfikowanie wartościSprawdzanie kluczyUsuwanie parIterowanie po mapiePodsumowanie – częstość występowania słów7Zaawansowane funkcje
Przekazywanie przez referencjęWprowadzenie do wyrażeń lambdaWyrażenia lambda z parametramiWyrażenia lambda z wartościami zwracanymiWprowadzenie do rekurencjiRekurencyjny silniaSortowanie za pomocą lambda2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadaniaPoćwicz samodzielnie: Kompilator C++ online