1
resposta

[Dúvida] Como o Python trata a pilha que funções

No exemplo apresentado no criação da primeira aplicação, o instrutor inseriu no código de uma função escolheropcao uma chamada à função main, que anteriormente chamou a função escolheropcao. Assim, me parece que está havendo superposicão de chamada da função main na pilha do aplicativo.

1 resposta

Oi, Arismar! Tudo bem?

Nesse caso, a função main chama a função escolher_opcao, e dentro de escolher_opcao, há uma condição que pode levar a uma chamada de volta para main, o que configura uma recursão indireta, onde main chama escolher_opcao que pode chamar main novamente.

É importante notar que, embora a recursão seja uma ferramenta poderosa, ela deve ser usada com cuidado para evitar o consumo excessivo de memória ou mesmo um erro de "estouro de pilha" (stack overflow), que ocorre quando a pilha de chamadas atinge o limite de profundidade devido a chamadas recursivas excessivas.

Porém para tentar evitar esses problemas em ciclos de chamadas como o citado, implementamos que a função main só seja chamada novamente se uma ação específica for realizada pelo usuário, como selecionar uma opção inválida.

Parabéns pela observação e obrigada por compartilhá-la com a nossa comunidade do fórum!

Um forte abraço e bons estudos!