Zadanie z rekurencji
Ostatnio zmodyfikowano 2015-01-14 20:00
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 ":".
|
|
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
|
|
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. |
|
1 « 2 » |