Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zadanie z rekurencji

Ostatnio zmodyfikowano 2015-01-14 20:00
Autor Wiadomość
bnk120
» 2015-01-14 19:18:51
To jest rekurencja, wywołujesz "samą siebie". Przy pierwszym wywołaniu funkcji pisz("uwaga:wskazniki!!!"); wchodzisz do jej ciała, wykonujesz najpierw pierwszego if'a ( jakby był prawdą to dalej nie leciałabyś, tylko wyszła z funkcji przy pomocy polecenia return;). Następnie lecisz dalej, sprawdzasz drugiego if'a. W tym wypadku jest to prawda i wchodzi w ciało tego if'a ( i tu smaczek :P ). Wchodzi do tego ciała i wywołuje funkcję pisz z argumentem s + 2. JEDNAK pamięta, że przed wywołaniem tej funkcji pisz(s + 2), pierwsze wywołanie znajduje się w ciele tego if'a tak? Jak wykona pisz(s+2) to jeszcze musi wykonać to co zostało dalej, czyli  printf( "%c", s[ 3 ] );

Zauważ w jaki sposób wyświetliłaś na ekranie ":", tzn. jaka metoda wypisała Ci na ekran ":".
P-124930
Malina94
Temat założony przez niniejszego użytkownika
» 2015-01-14 19:50:07
Czyli w sumie po takim głównym wywołaniu funkcji, wchodzę do tego ifa i w nim siedzę, a jak dojdę do return, to wyskakuję z jego "zagłębień" aż z niego wyjdę i zajmę się printfem?

To pierwsze zadanie, które wrzuciłam jest jednak prostsze do rozpisania. :P Np. dla 1:

zagadka(0) + zagadka(0)
|              |
return 1 + return 1 ==> 2
P-124933
bnk120
» 2015-01-14 20:00:54
Jeżeli dojdziesz do return to wyjdziesz tylko z tego pojedynczego "zagłębienia", nie od razu ze wszystkich. Jeżeli masz z tym problem to stawiaj jakieś unikalne znaczki przy wywołaniach funkcji rekurencyjnej, nie wiem jakieś gwiazdki, dolary itp., żebyś wiedziała jak bardzo głęboko jesteś :p  Albo ponumeruj sobie, też jakiś sposób jest i skreślaj które zagłębienie już zostało wykonane, a które Ci jeszcze pozostało.
P-124935
1 « 2 »
Poprzednia strona Strona 2 z 2