Presentation is loading. Please wait.

Presentation is loading. Please wait.

Rastreamento da função fatorial recursiva function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end Supondo-se o seguinte.

Similar presentations


Presentation on theme: "Rastreamento da função fatorial recursiva function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end Supondo-se o seguinte."— Presentation transcript:

1 Rastreamento da função fatorial recursiva function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end Supondo-se o seguinte trecho de programa... : A := 4; F := Fat(A);

2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; Alocação de memória N 4

3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; Alocação de memória N 4

4 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; Alocação de memória N 4 4 * Fat(3) Nova ativação de Fat

5 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end;

6 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end;

7 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) Nova ativação de Fat

8 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end;

9 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end;

10 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1) Nova ativação de Fat

11 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1) N 1 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end;

12 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1) N 1 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end;

13 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1) N 1 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 1 * Fat(0) Nova ativação de Fat

14 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1) N 1 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 1 * Fat(0) N 0 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end;

15 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1) N 1 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 1 * Fat(0) N 0 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; Função encerra e retorna 1 Fat(0) = 1

16 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1) N 1 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 1 * Fat(0)

17 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1) N 1 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 1 * 1 = 1 Função encerra e retorna 1 Fat(1) = 1

18 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * Fat(1)

19 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2) N 2 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 2 * 1 = 2 Função encerra e retorna 2 Fat(2) = 2

20 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * Fat(2)

21 Alocação de memória N 4 N 3 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3) function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 3 * 2 = 6 Função encerra e retorna 6 Fat(3) = 6

22 Alocação de memória N 4 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * Fat(3)

23 Alocação de memória N 4 function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end; 4 * 6 = 24 Função encerra e retorna 24 Fat(4) = 24

24 : A := 4; F := Fat(A); : Alocação de memória A 4 F 24 Retorno ao módulo que fez a 1a. chamada...


Download ppt "Rastreamento da função fatorial recursiva function Fat (N: byte): Longint; begin if N = 0 then Fat := 1 else Fat := N * Fat (N-1) end Supondo-se o seguinte."

Similar presentations


Ads by Google