Mostre, através do teste de mesa, o resultado da seguinte função:
Considere a entrada .
Passo 1
Sendo 3 o dado recebido como parâmetro e a variável local que armazenará esse valor, a primeira coisa que irá ocorrer é a verificação de igualdade entre e 0 (linha 03). Como é igual a 3 (diferente de 0) o bloco que será executado é else, esse por sua vez cria uma instância da função passando como parâmetro o número 2 ().
Passo 2
Já na nova instância temos armazenando o valor 2, como 2 ainda é diferente de 0, outra instância de é 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 o valor 0.
Passo 4
Por fim, temo 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 é igual a 1, mas dessa vez sabemos o resultado de e o programa saberá realizar a multiplicação , pois a mesma é equivalente a .
O resultado, que também é 1, será retornado para a instância anterior.
Passo 5
Estamos agora na instância em que é igual a 2 e sabemos que , logo se temos , sabemos o computador já sabe que isso é equivalente a .
Passo 6
Por fim, estamos na primeira instância criado, aquela em que é igual a 3. Porém, dessa vez sabemos que , logo, se temos que é equivalente a , o computador simplesmente realizará uma multiplicação de 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.