Considere o código Java abaixo, que implementa um método hip...

Próximas questões
Com base no mesmo assunto
Q1861914 Programação
Considere o código Java abaixo, que implementa um método hipotético.

static long recursivo(int n) {
    if (n < 2) {
     return n;
    } else {
         return recursivo(n - 1) + recursivo(n - 2);
     }
}

Assinale a alternativa que indica CORRETAMENTE o retorno da execução desse método, considerando o valor 7 passado como argumento.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - 13

A questão apresenta um método em Java que utiliza a técnica de programação chamada recursão. Recursão ocorre quando uma função (ou método) chama a si mesma com diferentes argumentos, visando resolver um problema maior através da solução de instâncias menores desse mesmo problema.

No contexto da questão, o método recursivo implementa o cálculo da série de Fibonacci, que é uma sequência de números onde cada termo subsequente corresponde à soma dos dois termos anteriores, começando com 0 e 1. A série prossegue da seguinte forma: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34...

Para entender por que a alternativa C está correta, vejamos o que acontece ao chamar o método com o valor 7:

  • recursivo(7) irá resultar em recursivo(6) + recursivo(5)
  • recursivo(6) irá resultar em recursivo(5) + recursivo(4)
  • recursivo(5) irá resultar em recursivo(4) + recursivo(3)
  • recursivo(4) e recursivo(3) irão se desdobrar da mesma maneira, até que se chegue ao caso base do algoritmo (n < 2)

O caso base determina que se n é menor do que 2, o método deve retornar o próprio valor de n, que nesse contexto significa retornar o próprio termo da sequência de Fibonacci para 0 e 1, respectivamente.

O processo de recursão continua até que todos os métodos chamados tenham retornado um valor, e a soma desses valores é calculada de acordo com a série de Fibonacci. Portanto, ao seguir a sequência e somar os valores de acordo com as chamadas recursivas, obtemos:

recursivo(7) = recursivo(6) + recursivo(5) = (5 + 8) = 13

Essa é a razão pela qual a alternativa C - 13 é a resposta correta, pois é o sétimo termo na sequência de Fibonacci.

Para resolver questões como essa, é essencial entender a lógica de recursão e estar familiarizado com a série de Fibonacci. Além disso, a habilidade de rastrear chamadas recursivas e entender o caso base são fundamentais para solucionar problemas desse tipo.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Vai retornar o 7º elemento da Fibonacci:

1 1 2 3 5 8 13

c-

recursao:

6 - 5 = 11

4 - 3 = 1

2 -1 = 1

n inferior a 2. encerra loop

11+1+1=13

_________

public class Question11 {

   static long recursivo(int n) {

      if (n < 2) {

       return n;

      } else {

           return recursivo(n - 1) + recursivo(n - 2);

       }

   }

   public static void main(String[] args) {

      // TODO Auto-generated method stub

      int n = 7;

      System.out.println(recursivo(n));

   }

}

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo