Download presentation
Presentation is loading. Please wait.
Published byMohammed Sole Modified over 10 years ago
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...
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.