Carregando...
Carregando...
Em linguagens de programação como Python, chamadas recursivas são armazenadas na pilha de execução, que gerencia a sequência de instruções a serem resolvidas. Em algumas situações, o uso de listas multidimensionais e recursão sem controle pode levar ao esgotamento da pilha. Compreender o funcionamento dessa estrutura é importante em aplicações que tratam grandes volumes de dados ou que repetem chamadas de função em camadas sucessivas.
Considere o código abaixo:
1 def preencher(matriz, i=0):
2 matriz[i][i] = i
3 return preencher(matriz, i+1)
4 m = [[0]*100 for _ in range(100)]
5 preencher(m)
Com relação a este contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas:
I. A execução do código pode causar estouro da pilha de chamadas, pois a função é chamada recursivamente sem uma condição de parada.
PORQUE
II. A função preencher irá parar automaticamente ao alcançar o final da matriz, pois a linguagem Python ignora limites ao usar listas multidimensionais. A respeito dessas asserções, assinale a alternativa correta:
Explique melhor esta questão
Abre o Tutor com o enunciado e as alternativas já no campo — você revisa e envia.
Esta questão foi verificada por um de nossos administradores.
A asserção I é uma proposição verdadeira, pois a função preencher é recursiva e não possui uma condição de parada (caso base), fazendo com que novas chamadas sejam acumuladas indefinidamente na pilha de execução do Python. Como a pilha tem um limite, eventualmente haverá um erro de RecursionError, que representa tecnicamente o estouro da pilha. Esse tipo de falha é relevante em segurança computacional, pois pode ser explorado em contextos de ataques por estouro de buffer em linguagens que lidam com gerenciamento manual de memória.
A asserção II é uma proposição falsa, pois Python não ignora limites ao acessar listas; ao tentar acessar matriz[i][i] com um índice inexistente, um erro IndexError será gerado antes mesmo de a pilha estourar, se a matriz for pequena. A linguagem é estruturada para lançar exceções quando índices inválidos são utilizados, e não “avança automaticamente” pelos limites da matriz.