Jak dziala ta funkcja rekuerencyjna ...

0

Witam moja nauka prze do matury z infy... i tutaj prośba o wytłumaczenie jak działa ta funkcja.
funkcja zamienia dec na bin od razu z przestawionymi od tylu ... jedynkami i zerami

int dobinara(int a)
{
if (a >=2){
dobinara(a/2);
}
cout << a % 2;

}

0

To proste:

  • najpierw wrzuca na stos: a, a/2, a/4, a/8, itd co widać w rekurencji na początku,
  • następnie zdejmuje liczby ze stosu i wypisuje ich ostatni bit co widać na końcu funkcji,
2

Rozpisz sobie na kartce wywołanie tej funkcji linijka po linijce dla jakiejś danej liczby.

Np. wywołanie dobinara(9).

dobinara(9):
1. `a` jest większe lub równe od 2? Tak, wywołujemy więc `dobinara` z `a` podzielonym przez dwa.
   dobinara(4):
   1. `a` jest większe lub równe od 2? Tak, wywołujemy więc `dobinara` z `a` podzielonym przez dwa.
      dobinara(2):
      1. `a` jest większe lub równe od 2? Tak, wywołujemy więc `dobinara` z `a` podzielonym przez dwa.
          dobinara(1):
          1. `a` jest większe lub równe od 2? Nie.
          2. wypisujemy resztę z dzielenia `a` przez 2.
       2. wypisujemy resztę z dzielenia `a` przez 2.
    2. wypisujemy resztę z dzielenia `a` przez 2.
2. wypisujemy resztę z dzielenia `a` przez 2.
0

Doskonale, teraz już zrozumiałem użycie takiej rekuerencji, dziękuje za niezmiernie szybką odpowiedź oraz dziękuje Rev za dokładne przestawienie oraz dziękuje też Wibowitowi :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1