Recursividade
Thayna Gimenez
Engenharia de computação – 1º período
Algoritmo
Recursividade
Função Recursiva
Definição:
Função Recursiva é uma função que invoca a si própria, ou invoca outra função, e na sequência das diversas sub funções, uma das sub funções invoca a primeira função. Cada vez que uma função é chamada de forma recursiva, é alojado e guardado uma cópia dos seus parâmetros por forma a não perder os valores dos parâmetros das chamadas anteriores. Em cada instância da função, só são diretamente acessíveis os parâmetros criados para esta instância, não sendo diretamente acessíveis os parâmetros de outras instâncias.
A informação guardada na invocação de uma função é designada por Estrutura de Invocação e consiste basicamente na seguinte informação:
- Endereço de retorno (quando a função terminar o programa deve continuar a sua execução na linha seguinte à invocação da função)
- Estado dos registos e flags do CPU
- Variáveis passadas como argumentos para a função (por valor, referência, etc.)
- Variável de retorno (por valor, referência, etc.)
A invocação de uma função recursiva é igual à invocação de uma função não recursiva, na qual é necessário guardar uma estrutura de invocação, sendo esta estrutura libertada depois do fim da execução da função e afetação/atualização do valor de retorno.
Exemplo n.º 1
Escrever uma sequência de números na vertical
#include
void esc_numero1(int num)
{
if (num > 0)
{ esc_numero1(num-1); cout