Wprowadzenie do rekurencji
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 47 z 65.
Rekurencja to technika programowania, w której funkcja wywołuje samą siebie, aby rozwiązać problem. Wyobraź sobie dwa lustra ustawione naprzeciwko siebie — każde odbicie zawiera mniejszą wersję tego samego obrazu, tworząc nieskończoną pętlę, aż odbicia staną się zbyt małe, by je dostrzec.
Każda funkcja rekurencyjna potrzebuje dwóch podstawowych elementów, aby działać prawidłowo. Przypadek bazowy to warunek, który zatrzymuje rekurencję — to jak punkt, w którym odbicia w lustrze stają się zbyt małe, by miało to znaczenie. Bez przypadku bazowego funkcja wywoływałaby samą siebie bez końca, aż w końcu doprowadziłaby do awarii programu.
Krok rekurencyjny to moment, w którym funkcja wywołuje samą siebie, rozwiązując zmodyfikowaną wersję pierwotnego problemu. Za każdym razem, gdy funkcja wywołuje samą siebie, powinna pracować nad mniejszą lub prostszą wersją problemu, stopniowo zbliżając się do przypadku bazowego.
Wyobraź sobie, że szukasz kluczy w stosie papierów. Możesz sprawdzić, co jest na wierzchu, a jeśli nie ma tam kluczy, zrobić to samo z pozostałym stosem (który jest teraz mniejszy o jeden arkusz). Powtarzasz ten proces, aż znajdziesz klucze albo nie zostanie już żaden papier do sprawdzenia.
To podejście, polegające na rozbijaniu dużego problemu na mniejsze, identyczne problemy, sprawia, że rekurencja jest tak przydatna w przypadku niektórych rodzajów wyzwań programistycznych.
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 sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego7Zaawansowane funkcje
Funkcje anonimowePrzekazywanie funkcji jako argumentówZrozumienie domknięćWprowadzenie do rekurencjiFunkcja rekurencyjna: odliczanieFunkcja rekurencyjna: silniaPowtórzenie – przetwarzanie listy2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online