[Ada95] Ciąg fibonacciego.

KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

Jak zliczyć ilość wywołań rekurencji?

Kopiuj
...
...
IleRek: integer:=0; 

   function fibrek(N: integer) return integer IS
   begin
    if N=1 or else N=2 then return 1;
    Else
    return Fibrek(N-1)+Fibrek(N-2);
         IleRek:=IleRek+1;
         end if;
    end;

Tak by było dla iteracji? Ale czy dla rekurencji?

Wyświetla się błąd
warning: unreachable code

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0
keid napisał(a)

Wyświetla się błąd warning: unreachable code
Nie znam Ady, ale jeśli return

Kopiuj
 działa tak jak w C, to linijka `IleRek:=IleRek+1;` się nigdy nie wykona.
sprzedamsanki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 278
0

Dla rekurencji musisz dodać kolejny argument, który w pierwszym wywołaniu będzie wynosić 0, a potem będziesz go inkrementować w każdym zagłębieniu.

KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

No myślałem, że to co napisałem będzie działać prawidłowo.
Jak więc poprawnie to rozpisać?

cyriel
  • Rejestracja: dni
  • Ostatnio: dni
0

Najpierw zwieksz zmienna, a potem wykonaj instrukcje return (costam).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.