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

Rekurencja

Ostatnio zmodyfikowano 2013-08-21 23:01
Autor Wiadomość
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:
C/C++
#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 ) // Funkcja jest wywolywana 10 razy az i osiagnie wartosc 0.
         Odlicznie( i - 1 );
   
    cout << i << ". Start zgodny planem\n"; // Tutaj zaczynaja sie schody.
    // i ma wartosc 0, napis jest generowany 10 razy az i wroci do wartosci 10,
    // czyli funkcja konczy sie gdy osiagnie wartosc false.
}
Pytanie czy dobrze rozumiem dzialanie rekurencji a jesli nie to prosze o wytlumaczenie.
P-90711
pekfos
» 2013-08-21 20:25:10
Nie widzę żadnego pytania, więc strzelam:
C/C++
if( i > 0 )
{
    Odliczanie( i - 1 );
    return;
}
P-90712
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.
P-90713
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.
P-90715
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:
C/C++
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.
P-90723
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.
P-90724
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ć.
P-90725
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.
P-90726
« 1 » 2
  Strona 1 z 2 Następna strona