O que é uma chamada de cauda?

Na programação do computador, uma chamada de cauda é uma situação específica dentro do código -fonte do programa, no qual uma função, sub -rotina ou procedimento retorna um valor esperado chamando outra função em vez de simplesmente passar uma variável que mantém o valor de retorno. O próprio nome indica que a função chamada para calcular o valor a ser retornada está no final, ou cauda, ​​da função que o chama para fornecer um valor de retorno. Uma chamada de cauda é interessante para alguns programadores porque, com certas otimizações ou comportamentos do compilador, nenhum espaço de pilha adicional é usado para armazenar localizações de código da função principal; A função da cauda é usada para gerar os relatórios de valor de retorno diretamente de volta ao ponto de chamada em que a função original foi invocada. O uso de uma chamada de cauda é particularmente útil em situações nas quais a recursão é empregada, porque a quantidade de espaço de pilha usada para armazenar os endereços do chamador nos casos em que as chamadas recursivas ninhos podem rapidamente se esgotar e parar o ProgramaM execução. Embora o uso de chamadas de cauda possa ajudar a aumentar a velocidade, o uso da memória e a eficiência em um programa, isso também pode levar a situações nas quais o código -fonte é reestruturado para usar as chamadas de uma maneira que dificulta a depuração e rastreamento, especialmente com casos de recursão.

A existência de uma chamada de cauda deve -se em grande parte à forma como a pilha de chamadas funciona na maioria dos programas de computador e arquiteturas do sistema. A pilha, que é como uma pilha de placas, é uma estrutura de dados de primeira entrada e saída. Quando uma função, sub -rotina ou procedimento é chamado, o endereço a partir do qual a chamada é feita, denominada quadro de pilha, é armazenada na pilha. Isso significa que um programa que chama a função A, que chama a função B, terá dois quadros de pilha, um para a função B e outro abaixo dela para a função A. Após a função B terminar, seu quadro de pilha é retirado da parte superior da pilha e execuçãoRetorna à função A, que tem seu quadro, apareceu na pilha quando é feito, finalmente retornando o controle do programa ao ponto em que a primeira função foi chamada originalmente.

Quando uma chamada de cauda é usada, a instrução Return em uma função usa diretamente o valor de retorno de outra função como os dados a serem enviados ao código de chamada. No exemplo acima, se a função A chama a função B diretamente com a instrução Return, uma chamada de cauda foi formada. Dentro da pilha de chamadas, em vez de ter um quadro de pilha para as duas funções A e B, a Função B receberá o endereço de retorno da função A e da função A da estrutura de pilha será exibida e descartada, o que significa que a função b passará seu valor de retorno diretamente de volta à localização que chamou de função A sem primeiro ter que transmitir o controle de volta para funcionar A. Aumenta a velocidade da função, bem como a ajuda para manter a quantidade de quantidade de que a quantidade de the Information the Information the STAT.

As propriedades de uma chamada de cauda podem torná -las muitoopção atraente para funções recursivas. Uma função recursiva é aquela que se chama repetidamente para calcular um valor, como pode ser o caso ao atravessar uma estrutura de dados da lista. Nenhum quadro de pilha adicional é criado para as chamadas de função aninhadas; portanto, níveis muito profundos de recursão podem ser executados com segurança sem a ameaça imediata de um transbordamento de pilha e possível terminação do programa.

OUTRAS LÍNGUAS

Este artigo foi útil? Obrigado pelo feedback Obrigado pelo feedback

Como podemos ajudar? Como podemos ajudar?