Rekurencja
Ostatnio zmodyfikowano 2013-08-21 23:01
xReprisal Temat założony przez niniejszego użytkownika |
Rekurencja » 2013-08-21 20:19:33 Mam problem ze zrozumieniem zasady dzialania rekurencji w tym programie: #include <iostream> #include <conio.h> using namespace std; void Odliczanie( int i );
int main() { Odliczanie( 10 ); getch(); return 0; }
void Odliczanie( int i ) { cout << "Rakieta startuje za " << i << " sek.\n"; if( i > 0 ) Odlicznie( i - 1 ); cout << i << ". Start zgodny planem\n"; }
Pytanie czy dobrze rozumiem dzialanie rekurencji a jesli nie to prosze o wytlumaczenie. |
|
pekfos |
» 2013-08-21 20:25:10 Nie widzę żadnego pytania, więc strzelam: if( i > 0 ) { Odliczanie( i - 1 ); return; } |
|
xReprisal Temat założony przez niniejszego użytkownika |
» 2013-08-21 20:31:03 Chodzi o czesc cout << i << ". Start zgodny z planem\n" Dlaczego wywoluje sie 10 razy. |
|
MrPoxipol |
» 2013-08-21 21:23:15 Bo 10 razy jest wywoływana funkcja. Powinno być to zrobione inaczej (oczywiście, jeśli chodzi o sens), ale w każdym razie jest poprawne. |
|
xReprisal Temat założony przez niniejszego użytkownika |
» 2013-08-21 22:15:41 Rakieta startuje za 10 sek. Rakieta startuje za 9 sek. Rakieta startuje za 8 sek. Rakieta startuje za 7 sek. Rakieta startuje za 6 sek. Rakieta startuje za 5 sek. Rakieta startuje za 4 sek. Rakieta startuje za 3 sek. Rakieta startuje za 2 sek. Rakieta startuje za 1 sek. Rakieta startuje za 0 sek. 0. Start zgodny z planem 1. Start zgodny z planem 2. Start zgodny z planem 3. Start zgodny z planem 4. Start zgodny z planem 5. Start zgodny z planem 6. Start zgodny z planem 7. Start zgodny z planem 8. Start zgodny z planem 9. Start zgodny z planem 10. Start zgodny z planem
Wychodzi na to ze: cout << "Rakieta startuje za " << i << " sek.\n"; if( i > 0 ) Odliczanie( i - 1 );
funkcja wywoluje sie tu 10 razy. A nastepne 10 razy dla czesci cout << i << ". Start zgodny z planem\n"; CO razem daje 20 wywolan. Bo jesli wykonywalaby sie tylko 10 razy to "Rakieta startuje" i "Start zgodny" powinny byc wypisywane naprzemian. |
|
xReprisal Temat założony przez niniejszego użytkownika |
» 2013-08-21 22:18:29 Bo ogolnie to chodzi o to czemu "Start zgodny z planem" jest wypisywany na koncu az 10 razy. |
|
Matej |
» 2013-08-21 22:32:57 Jest jak najbardziej prawidłowo. Wywoływane są kolejno funkcje wypisując na ekran "Rakieta startuje za x sek.", nastepnie gdy wartość i wynosi 0 wszystkie 10 'otwartych' funkcji wypisuje kolejno "x. Start zgodny z planem" tak jakby 'wracając'. Nie umiem tego dobrze wytłumaczyć, spróbuj użyć debugera żeby łatwiej zrozumieć. |
|
kampar |
» 2013-08-21 22:48:41 Funkcja wypisuje na ekran "rakieta startuje", wykonuje jakąś tam funkcje (w tym przypadku samą siebie, ale to nie ma znaczenia), a potem wypisuje "Start zgodny z planem. Każde wywołanie funkcji Odliczanie korzysta z innej zmiennej i. |
|
« 1 » 2 |