DC-UFRPE/Bacharelado em Ciência da Computação/Introdução a Programação I/Função Recursiva

Uma função recursiva é uma função que chama a si mesma repetidamente, até que uma condição de parada seja atingida. Ou seja, a função é definida em termos dela mesma, permitindo que problemas complexos sejam decompostos em subproblemas menores e mais simples[1].

Em todas as funções recursivas existe:

  • Um passo básico (ou mais) cujo resultado é imediatamente conhecido.
  • Um passo recursivo em que se tenta resolver um subproblema do problema inicial.

Essa técnica é amplamente utilizada em programação, especialmente para problemas matemáticos e algoritmos. Um exemplo comum de uma função recursiva é a função de Fibonacci, que é definida por:

int fibonacci(int n) {
    if (n <= 1) {
        return n;
    } else {
        return fibonacci(n-1) + fibonacci(n-2);
    }
}

Essa função retorna o n-ésimo número da sequência de Fibonacci, que é definida como a soma dos dois números anteriores. A condição de parada é quando n é menor ou igual a 1.

Para ilustrar como essa função é recursiva, vamos considerar a chamada fib(5). A função verifica que n é maior do que 1, então chama fib(4) e fib(3). A chamada fib(4) chama fib(3) e fib(2), enquanto a chamada fib(3) chama fib(2) e fib(1). Quando a chamada fib(1) é feita, a condição de parada é atingida e a função retorna 1. As outras chamadas são concluídas em seguida, resultando no valor de retorno da função original, que é 5.

Logo, ao utilizar uma função recursiva, devemos ter em mente o caso base(o estado mais simples da função) e a partir dele, montar a função que chama a si mesma.

  1. https://www.geeksforgeeks.org/recursive-functions/