Uma função é dita recursiva se é definida em seus próprios t...

Próximas questões
Com base no mesmo assunto
Q2695594 Arquitetura de Software

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?

Alternativas

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