Exercícios Resolvidos de Introdução à recursividade

Ver Teoria

Enunciado

Mostre, através do teste de mesa, o resultado da seguinte função:

Considere a entrada f 1 ( 3 ) .

Passo 1

Sendo 3 o dado recebido como parâmetro e n a variável local que armazenará esse valor, a primeira coisa que irá ocorrer é a verificação de igualdade entre n e 0 (linha 03). Como n é igual a 3 (diferente de 0) o bloco que será executado é else, esse por sua vez cria uma instância da função f 1 passando como parâmetro o número 2 ( n - 1 ).

Passo 2

Já na nova instância temos n armazenando o valor 2, como 2 ainda é diferente de 0, outra instância de f 1 é criada (dessa vez passando o valor 1 como parâmetro).

Passo 3

O mesmo ocorre aqui, pois 1 ainda é diferente de 0, o que faz com que outra instância seja criada passando como parâmetro de f 1 o valor 0.

Passo 4

Por fim, temo n igual a 0, isso faz com que o nosso caso básico seja verdadeiro e o valor 1 seja retornado para a instância anterior.

Estamos agora novamente na instância em que n é igual a 1, mas dessa vez sabemos o resultado de f 1 ( 0 ) e o programa saberá realizar a multiplicação n * f 1 ( n - 1 ) , pois a mesma é equivalente a 1 * 1 .

O resultado, que também é 1, será retornado para a instância anterior.

Passo 5

Estamos agora na instância em que n é igual a 2 e sabemos que f 1 1 = 1 , logo se temos n * f 1 ( n - 1 ) , sabemos o computador já sabe que isso é equivalente a 2 * 1 .

Passo 6

Por fim, estamos na primeira instância criado, aquela em que n é igual a 3. Porém, dessa vez sabemos que f 1 2 = 2 , logo, se temos n * f 1 ( n - 1 ) que é equivalente a 3 * f 1 ( 2 ) , o computador simplesmente realizará uma multiplicação de 3 * 2 que é igual a 6.

Resposta

Analisando o resultado obtido, isso nada mais do que o algoritmo para o cálculo do fatorial de um número através do uso de funções recursivas.