[PHP] Tak czy nie dla rekurencji |
[PHP] Tak czy nie dla rekurencji |
28.06.2016, 12:50:38
Post
#1
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%) |
Czy w dobie dzisiejszego programowania używanie rekurencji jest złą praktyką? Czasem spotykam się z opiniami że z rekurencja lepiej dać sobie spokój bo źle wpływa na wydajność. Dłubiąc w kodzie w pewnym etapie fajne wyszło z rekurencją. Dałoby się zrobić to bez niej, trochę więcej kodu trzeba by napisać. Mam kompleks, żeby wrócić i to przepisać bez rekurencji. Funkcja sama siebie wywoła maksymalnie około 10 razy. Jak poważni programiści się zapatrują na ten błahy problem?
-------------------- |
|
|
28.06.2016, 12:52:13
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 440 Pomógł: 6290 Dołączył: 27.12.2004 |
Wszystko jest dla ludzi, trzeba tylko wiedziec jak uzywac. Czasami rekurencja jest poprostu jedyna najlepsza opcja dla danego rozwiazania, wiec wszystko zalezy od konkretnego przypadku.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
28.06.2016, 13:31:01
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) |
Zwyczajnie trzeba umieć odróżnić kiedy rekurencja istotnie obciąży system a kiedy można ją spokojnie zastosować.
-------------------- |
|
|
28.06.2016, 23:46:30
Post
#4
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) |
Z ciekawości zrobiłem test,
Nie wiem na ile % poprawny ale myślę że mogę się dopisać do powyższych wypowiedzi. Jak się wykona poprawnie to różnice nie są widoczne. https://eval.in/597266 ^ rekurencja. "OK (0.016 sec real, 0.016 sec wall, 14 MB, 44 syscalls)"
https://eval.in/597265 ^ pętla. "OK (0.012 sec real, 0.012 sec wall, 14 MB, 42 syscalls)"
Ten post edytował KsaR 29.06.2016, 00:19:17 -------------------- |
|
|
29.06.2016, 09:57:56
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 440 Pomógł: 6290 Dołączył: 27.12.2004 |
@KsaR to raczej oczywiste ze rekurencja zajmie wiecej czasu niz zwykla petla. No ale tez i nikt nie powazny nie zamienia petli na rekurencje No nie po to wymyslono rekurencje
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
29.06.2016, 10:10:01
Post
#6
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 40 Dołączył: 2.06.2016 Skąd: Olsztyn Ostrzeżenie: (0%) |
@KsaR
Przy próbie jednego testu ciężko takim testem cokolwiek stwierdzić, zauważ, że uruchamiając ponownie obydwa skrypty czas się zmienia nagle rekurencja wykonuje się 0.007 a pętla 0.016. (już nie mówiąc o chwilowym obciążeniu serwera). Co do rekurencji, zaletą jest na pewno prostota kodu a wadą kluczową jest to iż źle zastosowana jest tylko pożeraczem pamięci -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 29.03.2024 - 01:30 |