Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 18.05.2012 Ostrzeżenie: (0%)
|
Witam, mógłby mi ktoś po kolei, że tak się wyrażę "jak chłopu na miedzy" przybliżyć poniższy kod ? Co się dzieje krok po kroku. Z góry dzieki;)
Ten post edytował bigos1995-95 11.08.2012, 17:11:40 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%)
|
Po co tam echo? Po co w funkcjach echo?
Twój kod robi tak: Kod silnia(3): wyświetl 3*silnia(2) silnia(2): wyświetl 2*silnia(1) silnia(1): zwróc 1 wyświetla 2*1=2 zwróc 0 (bo funkcja nic nie zwraca) wyświetla 3*0=0 zwróc 0 Nie wiem jak rekurencja może być czymś trudnym, czytaj więcej zamiast modyfikować kod. Ten post edytował greycoffey 12.08.2012, 14:29:56 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 2 Dołączył: 12.09.2005 Ostrzeżenie: (0%)
|
Po co tam echo? Po co w funkcjach echo? Twój kod robi tak: Kod silnia(3): wyświetl 3*silnia(2) silnia(2): wyświetl 2*silnia(1) silnia(1): zwróc 1 wyświetla 2*1=2 zwróc 0 (bo funkcja nic nie zwraca) wyświetla 3*0=0 zwróc 0 Nie wiem jak rekurencja może być czymś trudnym, czytaj więcej zamiast modyfikować kod. Jak silnia z 3 może się równać zero? Przegapiłeś warunek, że liczba jest większa od 1. EDIT: Zasada działania rekurencji jest bardzo prosta, jest to wywoływanie funkcji przez samą siebie. W tym przypadku jeśli wywołamy funkcję z argumentem 3 : silnia(3); Funkcja zostaje wywołana, nie spełnia warunku 3<2, więc jako wynik funkcji zostanie zwrócone 3 * silnia(3-1), więc znowu zostaje wywołana funkcja silnia(2); Funkcja zostaje wywołana, nie spełnia warunku 2<2, więc jako wynik funkcji zostanie zwrócone 2 * silnia(2-1), więc znowu zostaje wywołana funkcja silnia(1); Funkcja zostaje wywołana, spełnia warunek 1<2 więc zostaje zwrócona jedynka czyli do działania 2 * silnia(2-1) podstawiamy 1 co daje : 2 * 1. 2 * 1 jest wynikiem silnia(3-1), a więc pod 3 * silnia(3-1) podstawiamy odpowiednio 3 * 2 * 1 A więc to co zwróci silnia(3) to właśnie 3 * 2 * 1 co daje 6 i jest to poprawny wynik (IMG:style_emoticons/default/wink.gif) ---------- Warto dodać, że w tym czasie wywołanie silnia(3) czeka na rezultat silnia(2) z kolei ta na rezultat silnia(1), jeśli nie będzie warunku ograniczającego to funkcja będzie wywoływała samą siebie w nieskończoność. (infinity loop) Ten post edytował Yorki 12.08.2012, 14:56:40 |
|
|
|
bigos1995-95 Rekurencja 11.08.2012, 16:10:12
Crozin Zainstaluj sobie debugger (np. xdebug) i wykonaj s... 11.08.2012, 16:15:26
Bateria Nic się nie dzieje Zwraca błąd. 11.08.2012, 16:15:44
bigos1995-95 Nie zwraca błędu, działa. Sprawdź jeszcze raz. A c... 11.08.2012, 17:13:08
markonix Wklejając kod na forum ułatwiłeś sobie zbadanie te... 11.08.2012, 17:23:36
bigos1995-95 ja wiem co robia funkcje strlen, substr. Dobra nap... 11.08.2012, 18:17:09
d3ut3r pomysł z debuggerem polega na uruchomieniu kodu st... 11.08.2012, 18:44:37
bigos1995-95 To debugowanie odbywa się w jakimś programie ? Jak... 11.08.2012, 19:27:29
scanner Rekurencja to jeden z problemów matematycznych, lo... 11.08.2012, 19:39:28
markonix Rekurencje dobrze znać bo to dosyć ciekawe pojęcie... 11.08.2012, 19:40:33
bigos1995-95 Tak właśnie słyszałem i mam nawet w książce napisa... 11.08.2012, 21:33:46
IceManSpy A w google szukałeś? Przecież tam jest tyle inform... 11.08.2012, 21:47:20
bigos1995-95 Tak właśnie nie czytałeś tego nawet nie spojrzałeś... 12.08.2012, 02:58:48
markonix Co z tego, że z Pascala jak tu nie chodzi o naukę ... 12.08.2012, 07:20:42
bigos1995-95 Więc tak , trochę poczytałem ale nic mi to nie dał... 12.08.2012, 11:10:11 
greycoffey Cytat(Yorki @ 12.08.2012, 15:42:22 ) ... 12.08.2012, 20:56:48
bigos1995-95 Rozumiem jak dziala ta funkcja:
[PHP] pobierz, pl... 12.08.2012, 16:29:51
IceManSpy Rozpisz sobie na kratce, będzie Ci łatwiej. Z resz... 12.08.2012, 16:32:42
bigos1995-95 No niestety taki jestem że jak czegoś nie wiem to ... 12.08.2012, 17:07:54
klocu Krótko i na temat:
Kod- wywołujesz odwroc_r(... 12.08.2012, 17:58:06
bigos1995-95 klocu jesteś wielki ; )
Jeszcze jakbyś mógł mi po... 12.08.2012, 19:44:57
Crozin Nie wyszło 20, tylko 2 i 0 - instrukcja echo z lin... 12.08.2012, 20:25:13
bigos1995-95 Dokladnie, zapomniałem o dbuggerze a czytałem wczo... 12.08.2012, 20:47:49 ![]() ![]() |
|
Aktualny czas: 25.12.2025 - 22:59 |