Są chwile, w których użycie rekurencji jest lepsze niż użycie pętli, i czasy, w których użycie pętli jest lepsze niż użycie rekurencji. Wybór „właściwego” pozwala zaoszczędzić zasoby i / lub spowodować zmniejszenie liczby wierszy kodu. Czy istnieją przypadki, w których zadanie można wykonać tylko przy użyciu rekurencji, a nie pętli?
Czytałem o niektórych praktykach podczas wywiadów programistycznych, w szczególności o pytaniach technicznych i testach zadawanych podczas wywiadów i kilkakrotnie potknąłem się o powieści gatunku: „Ok rozwiązałeś problem z pętlą while, teraz możesz to zrobić z rekurencja ”lub„ każdy może rozwiązać ten problem za pomocą 100 linii podczas pętli, ale czy …
Z tego, co przeczytałem: Powodem jest to, że nie jest łatwo ustalić, która metoda zostanie faktycznie wywołana, ponieważ mamy dziedziczenie. Dlaczego jednak Java nie ma przynajmniej optymalizacji rekurencji dla metod statycznych i nie wymusza właściwego sposobu wywoływania metod statycznych za pomocą kompilatora? Dlaczego Java nie ma żadnego wsparcia dla rekursji …
Idea rekurencji nie jest zbyt powszechna w prawdziwym świecie. Dla początkujących programistów wydaje się to nieco mylące. Sądzę jednak, że stopniowo przyzwyczajają się do tej koncepcji. Co może być dla nich dobrym wyjaśnieniem, aby łatwo zrozumieć pomysł?
Jaka jest różnica między nimi? Rekurencja Corecursion Na Wikipedii jest niewiele informacji i brak wyraźnego kodu wyjaśniającego te warunki. Jakie są bardzo proste przykłady wyjaśniające te terminy? W jaki sposób corecursion jest podwójny względem rekurencji? Czy są jakieś klasyczne algorytmy rdzeniowe?
Prawie każdy artykuł, który mogę znaleźć na temat rekurencji, zawiera przykłady liczb czynnikowych lub Fibonacciego, które są: Matematyka Bezużyteczne w prawdziwym życiu Czy są jakieś interesujące przykłady kodu niemathowego do nauczania rekurencji? Myślę, że algorytmy dziel i zwyciężaj, ale zwykle obejmują one złożone struktury danych.
Pytanie Jakie są możliwe sposoby rozwiązania problemu przepełnienia stosu spowodowanego przez algorytm rekurencyjny? Przykład Próbuję rozwiązać problem Project Euler 14 i postanowiłem spróbować z algorytmem rekurencyjnym. Jednak program zatrzymuje się z java.lang.StackOverflowError. Zrozumiały. Algorytm rzeczywiście przepełnił stos, ponieważ próbowałem wygenerować sekwencję Collatz dla bardzo dużej liczby. Rozwiązania Zastanawiałem się więc: …
TL; DR: Czy języki funkcjonalne lepiej radzą sobie z rekurencją niż języki niefunkcjonalne? Obecnie czytam Code Complete 2. W pewnym momencie książki autor ostrzega nas przed rekurencją. Mówi, że należy tego unikać, gdy jest to możliwe, a funkcje wykorzystujące rekurencję są na ogół mniej skuteczne niż rozwiązanie wykorzystujące pętle. Na …
Zastanawiałem się, czy pętla while jest z natury rekurencją? Myślę, że dzieje się tak, ponieważ pętla while może być postrzegana jako funkcja, która wywołuje się na końcu. Jeśli nie jest to rekurencja, to jaka jest różnica?
Niedawno przeczytałem kilka artykułów (np. Http://dailyjs.com/2012/09/14/functional-programming/ ) na temat funkcjonalnych aspektów Javascript i relacji między Scheme i Javascript (na ten drugi miał wpływ pierwszy, na który jest językiem funkcjonalnym, podczas gdy aspekty OO są dziedziczone z Self, który jest językiem opartym na prototypowaniu). Moje pytanie jest jednak bardziej szczegółowe: zastanawiałem …
Problem ten koncentruje się głównie na algorytmie, być może czymś abstrakcyjnym i bardziej akademickim. Przykład oferuje myśl, chcę ogólny sposób, więc przykład został użyty tylko w celu wyraźniejszego wyjaśnienia twoich myśli. Ogólnie mówiąc, pętla może być przekształcona w rekurencyjną. na przykład: for(int i=1;i<=100;++i){sum+=i;} Jego powiązanym rekurencyjnym jest: int GetTotal(int number) …
O ile mi wiadomo, wszystkie współczesne imperatywne języki programowania obsługują rekurencję w tym sensie, że procedura może się nazywać sama. Nie zawsze tak było, ale nie mogę znaleźć żadnych twardych faktów dzięki szybkiemu wyszukiwaniu w Google. Więc moje pytanie brzmi: Które języki od samego początku nie obsługiwały rekurencji i kiedy …
Definicja kombinatora Y w F # to let rec y f x = f (y f) x f oczekuje, że jako pierwszy argument będzie miała kontynuację rekurencyjnych podproblemów. Używając yf jako kontynuacji, widzimy, że f będzie stosowane do kolejnych wywołań w miarę rozwoju let y f x = f (y …
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 5 lat temu . W opałach szkół java Joel omawia swoje doświadczenia w Penn i trudność „błędów segmentacji”. On …
Uczyłem się F # i zaczyna to wpływać na to, jak myślę, kiedy programuję w C #. W tym celu używam rekurencji, gdy czuję, że wynik poprawia czytelność i nie mogę sobie wyobrazić, że kończy się przepełnieniem stosu. To prowadzi mnie do pytania, czy kompilatory mogą automatycznie konwertować funkcje rekurencyjne …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.