Considere o código Java abaixo, que implementa um método hip...
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.
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 emrecursivo(6)
+recursivo(5)
recursivo(6)
irá resultar emrecursivo(5)
+recursivo(4)
recursivo(5)
irá resultar emrecursivo(4)
+recursivo(3)
recursivo(4)
erecursivo(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