Rekurencyjna ksi - Helion
Tytuł oryginału: The Recursive Book of Recursion: Ace the Coding Interview with Python and JavaScript
TÅ‚umaczenie: Filip Kami
ISBN: 978-83-8322-653-8
stron: 308, Format: 170x230, okładka: mi
Data wydania: 2023-06-01
Księgarnia: Helion
Cena książki: 47,40 zł (poprzednio: 79,00 zł)
Oszczędzasz: 40% (-31,60 zł)
Osoby które kupowały "Rekurencyjna ksi", wybierały także:
- D3.js w akcji 67,42 zł, (20,90 zł -69%)
- Tablice informatyczne. Node.js 16,86 zł, (5,90 zł -65%)
- React i GatsbyJS. Kurs video. Nowoczesne strony internetowe w oparciu o headless CMS i GraphQL 148,98 zł, (59,59 zł -60%)
- TypeScript i React. Kurs video. Tworzenie nowoczesnych komponent 129,00 zł, (51,60 zł -60%)
- Vue.js w praktyce. Kurs video. Poznaj narz 148,98 zł, (59,59 zł -60%)
Spis treści
Rekurencyjna książka o rekurencji. Zostań mistrzem rozmów kwalifikacyjnych poświęconych językom Python i JavaScript -- spis treści
Przedmowa
Podziękowania
Wprowadzenie
Część I. Zrozumieć rekurencję
1. Czym jest rekurencja?
- Definicja rekurencji
- Czym sÄ… funkcje?
- Czym sÄ… stosy?
- Czym jest stos wywołań?
- Czym są funkcje rekurencyjne i przepełnienie stosu?
- Przypadki bazowe i rekurencyjne
- Kod przed wywołaniem rekurencyjnym i po wywołaniu rekurencyjnym
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
2. Rekurencja a iteracja
- Obliczanie silni
- Iteracyjny algorytm obliczania silni
- Rekurencyjny algorytm obliczania silni
- Dlaczego rekurencyjny algorytm obliczania silni jest szalenie nieefektywny?
- Znajdowanie wyrazów ciÄ…gu Fibonacciego
- Iteracyjny algorytm wyznaczania n-tego wyrazu ciÄ…gu Fibonacciego
- Rekurencyjny algorytm wyznaczania n-tego wyrazu ciÄ…gu Fibonacciego
- Dlaczego rekurencyjny algorytm wyznaczania n-tego wyrazu ciÄ…gu Fibonacciego jest mocno nieefektywny?
- Zamiana algorytmu rekurencyjnego na iteracyjny
- Zamiana algorytmu iteracyjnego na rekurencyjny
- Studium przypadku: obliczanie potęg
- Rekurencyjna funkcja potęgująca
- Iteracyjne obliczanie potÄ™gi na podstawie wniosków z algorytmu rekurencyjnego
- Kiedy powinno się korzystać z rekurencji?
- Tworzenie algorytmów rekurencyjnych
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
- Zadania
3. Klasyczne algorytmy rekurencyjne
- Dodawanie liczb zapisanych w tablicy
- Odwracanie Å‚aÅ„cucha znaków
- Wykrywanie palindromów
- Wieże Hanoi
- Algorytm flood fill
- Funkcja Ackermanna
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
- Zadania
4. Algorytmy z nawrotami i algorytmy przechodzenia przez drzewa
- Algorytmy przechodzenia przez drzewo
- Drzewa w Pythonie i JavaScripcie
- Przechodzenie przez drzewo
- Przechodzenie przez drzewo w porzÄ…dku preorder
- Przechodzenie przez drzewo w porzÄ…dku postorder
- Przechodzenie przez drzewo w porzÄ…dku inorder
- Znajdowanie oÅ›mioliterowych sÅ‚ów w drzewie
- Ustalanie maksymalnej głębokości drzewa
- Szukanie wyjścia z labiryntu
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
- Zadania
5. Algorytmy typu "dziel i zwyciężaj"
- Wyszukiwanie binarne - znajdowanie książki na póÅ‚ce z uÅ‚ożonymi alfabetycznie pozycjami
- Sortowanie szybkie - dzielenie nieposortowanej sterty książek na posortowane stosy
- Sortowanie przez scalanie - Å‚Ä…czenie maÅ‚ych stosów kart do gry w wiÄ™ksze posortowane stosy
- Sumowanie liczb zapisanych w tablicy
- Algorytm mnożenia Karacuby
- Matematyka kryjÄ…ca siÄ™ za algorytmem Karacuby
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
- Zadania
6. Permutacje i kombinacje
- Podstawy teorii mnogości
- Znajdowanie permutacji bez powtórzeÅ„ - usadzanie goÅ›ci przy weselnym stole
- Znajdowanie permutacji za pomocą zagnieżdżonych pętli - podejście dalekie od ideału
- Permutacje z powtórzeniami - narzÄ™dzie do Å‚amania haseÅ‚
- Znajdowanie k-elementowych kombinacji za pomocÄ… rekurencji
- Znajdowanie wszystkich kombinacji zawierajÄ…cych poprawne nawiasowanie
- Zbiór potÄ™gowy - znajdowanie wszystkich podzbiorów zbioru
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
- Zadania
7. Memoizacja i programowanie dynamiczne
- Memoizacja
- Programowanie dynamiczne z zastosowaniem strategii top-down
- Memoizacja w programowaniu funkcyjnym
- Memoizacja w rekurencyjnym algorytmie wyznaczania elementów ciÄ…gu Fibonacciego
- Moduł functools Pythona
- Co siÄ™ stanie, gdy przeprowadzimy memoizacjÄ™ "nieczystej" funkcji?
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
8. Optymalizacja rekurencji ogonowej
- Jak działa rekurencja ogonowa i na czym polega jej optymalizacja?
- Akumulatory w rekurencji ogonowej
- Ograniczenia rekurencji ogonowej
- Rekurencja ogonowa - studium przypadku
- Rekurencja ogonowa - odwracanie Å‚aÅ„cuchów znaków
- Rekurencja ogonowa - znajdowanie podÅ‚aÅ„cuchów
- Rekurencja ogonowa - potęgowanie
- Rekurencja ogonowa - parzysty/nieparzysty
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
9. Rysowanie fraktali
- Grafika żóÅ‚wia
- Podstawowe funkcje modułu turtle
- TrójkÄ…t SierpiÅ„skiego
- Dywan Sierpińskiego
- Drzewa fraktalne
- Jak długie jest wybrzeże Wielkiej Brytanii? Krzywa i płatek śniegu Kocha
- Krzywa Hilberta
- Podsumowanie
- Materiały dodatkowe
- Pytania praktyczne
- Zadania
Część II. Projekty
10. Wyszukiwarka plików
- Program do wyszukiwania plików
- Funkcje dopasowujÄ…ce
- Znajdowanie plików, których rozmiar w bajtach jest parzysty
- Znajdowanie plików, których nazwy zawierajÄ… każdÄ… z piÄ™ciu samogÅ‚osek
- Rekurencyjna funkcja walk()
- Wywoływanie funkcji walk()
- Funkcje biblioteki standardowej Pythona przydatne w pracy z plikami
- Ustalanie nazwy pliku
- Wyszukiwanie informacji o znacznikach czasowych pliku
- Modyfikowanie plików
- Podsumowanie
- Materiały dodatkowe
11. Generator labiryntów
- Kod generatora labiryntów
- Stałe w generatorze labiryntu
- Tworzenie struktury danych labiryntu
- Wyświetlanie struktury danych labiryntu
- Korzystanie z rekurencyjnego algorytmu z nawrotami
- Rozpoczynanie łańcucha wywołań rekurencyjnych
- Podsumowanie
- Materiały dodatkowe
12. Układanie "piętnastki"
- Rekurencyjny algorytm układania "piętnastki"
- Kod programu do układania "piętnastki"
- Stałe w programie
- Reprezentacja układanki w danych
- Wyświetlanie układanki
- Tworzenie nowej układanki
- Znajdowanie wspóÅ‚rzÄ™dnych pustego pola
- Wykonywanie ruchu
- Cofanie ruchu
- Tworzenie nowej układanki
- Rekurencyjne rozwiązywanie piętnastki
- Funkcja solve()
- Funkcja attemptMove()
- Uruchamianie solvera
- Podsumowanie
- Materiały dodatkowe
13. Program do rysowania fraktali
- Fraktale dostępne w programie
- Algorytm zastosowany w programie
- Kod programu Fractal Art Maker
- Stałe w programie i konfiguracja modułu turtle
- Praca z funkcjami rysującymi kształty
- Funkcja drawFilledSquare()
- Funkcja drawTriangleOutline()
- Funkcja drawFractal()
- PoczÄ…tek funkcji
- Obsługa słownika specyfikacji
- Wykorzystywanie specyfikacji
- Tworzenie przykładowych fraktali
- Cztery rogi
- Spirala kwadratów
- Podwójna spirala kwadratów
- Spirala trójkÄ…tów
- Glider z "gry w życie" Conwaya
- TrójkÄ…t SierpiÅ„skiego
- Fala
- Róg
- Płatek śniegu
- Rysowanie pojedynczego kwadratu lub trójkÄ…ta
- Tworzenie własnych fraktali
- Podsumowanie
- Materiały dodatkowe
14. Efekt Droste
- Instalowanie biblioteki Pillow
- Przygotowanie obrazka
- Kod programu Droste Maker
- PoczÄ…tek implementacji
- Znajdowanie obszaru w kolorze magenty
- Zmiana rozmiaru obrazka
- Rekurencyjne umieszczanie obrazu w obrazie
- Podsumowanie
- Materiały dodatkowe