[Ada95] Ciąg fibonacciego.

0

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

...
...
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

0
keid napisał(a)

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

 działa tak jak w C, to linijka `IleRek:=IleRek+1;` się nigdy nie wykona.
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.

0

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

0

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

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