Uma função é dita recursiva se é definida em seus próprios t...
Uma função é dita recursiva se é definida em seus próprios termos, isto é, quando dentro dela há uma instrução de chamada para ela mesma. Considere o programa abaixo, escrito na linguagem Java, que contém uma função recursiva.
public static void main(String[] args) {
int X = 5, R;
R = Recursao(X);
System.out.println("R = " + R);
}
private static int Recursao(int X){
if(X == 0) return 1;
return X * Recursao(X-1);
}
Qual a saída gerada, após a execução do programa acima?
- Gabarito Comentado (1)
- Aulas (1)
- Comentários (0)
- Estatísticas
- Cadernos
- Criar anotações
- Notificar Erro
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: A - Para X = 5 -> R = 120.
Vamos entender como a função recursiva funciona e por que a alternativa A está correta.
Uma função recursiva é aquela que se chama dentro de si mesma. No programa fornecido, a função Recursao(int X) é recursiva, pois ela se chama novamente dentro do seu próprio corpo.
No caso desta função, ela realiza a operação de cálculo fatorial de um número. O fatorial de um número X, denotado como X!, é o produto de todos os inteiros positivos menores ou iguais a X. Por exemplo, 5! é igual a 5 × 4 × 3 × 2 × 1 = 120.
Vamos analisar o código:
public static void main(String[] args) { int X = 5, R; R = Recursao(X); System.out.println("R = " + R); } private static int Recursao(int X){ if (X == 0) return 1; return X * Recursao(X - 1); }
Para X = 5, o fluxo da função Recursao é o seguinte:
1. A função é chamada com X = 5.
2. Como X não é 0, retorna 5 * Recursao(4).
3. A função é chamada com X = 4.
4. Como X não é 0, retorna 4 * Recursao(3).
5. A função é chamada com X = 3.
6. Como X não é 0, retorna 3 * Recursao(2).
7. A função é chamada com X = 2.
8. Como X não é 0, retorna 2 * Recursao(1).
9. A função é chamada com X = 1.
10. Como X não é 0, retorna 1 * Recursao(0).
11. A função é chamada com X = 0.
12. Como X é 0, retorna 1.
13. Agora, voltando as chamadas, temos:
- Recursao(1) retorna 1 * 1 = 1
- Recursao(2) retorna 2 * 1 = 2
- Recursao(3) retorna 3 * 2 = 6
- Recursao(4) retorna 4 * 6 = 24
- Recursao(5) retorna 5 * 24 = 120
Portanto, a função retorna 120 quando chamada com X = 5, o que confirma que a alternativa A é correta.
Agora vamos analisar as outras alternativas:
B - Para X = 0 -> R = 120.
Isso está incorreto porque quando X = 0, a função Recursao(0) retorna 1, não 120.
C - Para X = 5 -> R = 0.
Isso está incorreto porque, como explicado, para X = 5, a função retorna 120, não 0.
D - Para X = 0 -> R = 0.
Isso está incorreto porque, como explicado, para X = 0, a função retorna 1, não 0.
E - Para X = 120 -> R = 5.
Isso está incorreto porque o valor de X = 5 é o parâmetro inicial da função, e o resultado é 120, não o contrário.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo