Analise o seguinte código escrito na linguagem Java: public ...
Analise o seguinte código escrito na linguagem Java:
public static double recursive (double d) {
if (d <= 1) {
return 1;
}
else {
return d * recursive(d - 1);
}
}
Assinale o conteúdo que será exibido na saída do programa quando a função for
chamada com o parâmetro 6:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a D - 720.
Para entender o porquê desta alternativa estar correta, é preciso analisar o código Java fornecido e ter conhecimento sobre a recursividade. O código em questão implementa uma função recursiva chamada recursive, que recebe um parâmetro do tipo double e retorna um valor também do tipo double.
A função verifica se o valor passado como argumento é menor ou igual a 1 (d <= 1
). Se for, a função retorna 1. Caso contrário, ela retorna o valor do argumento multiplicado pelo resultado da função recursive chamada com o valor do argumento subtraído de 1 (return d * recursive(d - 1)
). Esse comportamento é típico de uma função que calcula o fatorial de um número.
O fatorial de um número n é o produto de todos os inteiros positivos menores ou iguais a n e é representado por n!. Portanto, fatorial de 6 (6!) é calculado da seguinte maneira:
- 6! = 6 × 5 × 4 × 3 × 2 × 1
- 6! = 720
Quando a função recursive é chamada com o parâmetro 6 (recursive(6)
), ela executa a seguinte sequência de chamadas:
recursive(6)
-> 6 *recursive(5)
recursive(5)
-> 5 *recursive(4)
recursive(4)
-> 4 *recursive(3)
recursive(3)
-> 3 *recursive(2)
recursive(2)
-> 2 *recursive(1)
recursive(1)
-> retorna 1
Assim, o resultado é o produto destas chamadas, que é igual a 720. Portanto, a alternativa D é a correta, pois 720 é o valor do fatorial de 6.
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
6 x 120 = 720
5 x 24 = 120
4 x 6 = 24
3 x 2 = 6
2 x 1 = 2
1
Alternativa: D
Trata-se da implementação do algoritmo para calcular o fatorial de um número, através da recursividade. Estar familiarizado, facilita pra acelerar na resposta e não demorar analisando códigos. Algo que serve pra tomar tempo na prova.
recursive(6)
6*recursive(5)
6*5*recursive(4)
6*5*4*recursive(3)
6*5*4*3*recursive(2)
6*5*4*3*2*recursive(1)
6*5*4*3*2*1
720
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo