Questão 28 · aula Dividir para conquistar: quebrar, resolver e juntar
No merge sort, qual é a fase que realmente ordena os dados?
- A divisão, porque cortar a lista ao meio já deixa tudo em ordem.
- A combinação, quando duas metades já ordenadas são intercaladas numa lista maior ordenada.
- Nenhuma: o merge sort não ordena, só divide.
- A checagem do caso base, que reordena a lista inteira.
Ver a resposta
Resposta: B. A combinação, quando duas metades já ordenadas são intercaladas numa lista maior ordenada.
Dividir a lista ao meio não ordena nada; só quebra o problema. O trabalho de ordenar acontece na combinação, quando o algoritmo intercala duas metades já ordenadas comparando seus primeiros elementos. É por isso que, em dividir para conquistar, a fase de juntar costuma ser a mais importante.
Estudar a aula: Dividir para conquistar: quebrar, resolver e juntar
Questão 29 · aula A árvore de recursão: enxergar o trabalho total
O que a ALTURA da árvore de recursão representa?
- O número total de chamadas que a função faz.
- A profundidade da recursão: quantas chamadas ficam empilhadas ao mesmo tempo, uma esperando a outra.
- A quantidade de valores diferentes que a função pode devolver.
- A velocidade do computador que roda o código.
Ver a resposta
Resposta: B. A profundidade da recursão: quantas chamadas ficam empilhadas ao mesmo tempo, uma esperando a outra.
A altura da árvore é a profundidade da recursão, ou seja, quantas chamadas ficam abertas simultaneamente na pilha de chamadas. O número total de chamadas depende também da largura (quantas chamadas por nível). Uma árvore pode ser alta e fina (profunda mas com poucas chamadas) ou baixa e larga.
Estudar a aula: A árvore de recursão: enxergar o trabalho total
Questão 30 · aula Backtracking: tentar um caminho e voltar
No backtracking, o que acontece quando a tentativa atual chega a um beco sem saída?
- O algoritmo para e não encontra solução nenhuma.
- A última escolha é desfeita e o algoritmo volta para tentar a próxima opção daquele ponto.
- Todas as escolhas anteriores são apagadas de uma vez.
- O algoritmo escolhe uma casa aleatória para recomeçar.
Ver a resposta
Resposta: B. A última escolha é desfeita e o algoritmo volta para tentar a próxima opção daquele ponto.
Beco sem saída não encerra a busca: o backtracking desfaz apenas a última escolha e retorna ao ponto anterior para tentar a próxima opção. Só quando todas as opções de todos os pontos se esgotam é que a busca termina sem solução. Esse voltar controlado, um passo de cada vez, é a essência da técnica.
Estudar a aula: Backtracking: tentar um caminho e voltar
Questão 31 · aula Recursão ou iteração: qual escolher
Qual é a principal desvantagem da recursão frente a um laço, para uma repetição linear muito longa?
- A recursão dá sempre um resultado errado.
- Cada chamada ocupa espaço na pilha, então uma profundidade muito grande pode estourá-la, enquanto o laço roda em profundidade constante.
- A recursão não consegue devolver valores.
- O laço é o único que funciona com números.
Ver a resposta
Resposta: B. Cada chamada ocupa espaço na pilha, então uma profundidade muito grande pode estourá-la, enquanto o laço roda em profundidade constante.
Recursão e laço resolvem o mesmo, mas cada chamada recursiva aberta ocupa memória na pilha de chamadas. Numa repetição linear muito profunda (por exemplo, um milhão de passos), a recursão simples pode estourar a pilha, enquanto o laço mantém o estado em poucas variáveis e roda em profundidade constante. Por isso, para repetição linear longa, o laço é mais seguro.
Estudar a aula: Recursão ou iteração: qual escolher