Uma função recursiva é uma função que chama a si mesma para resolver um problema. Ela continua a se chamar até que o problema seja resolvido ou até que uma condição de parada seja alcançada. A recursão é um dos principais conceitos da programação e é amplamente utilizada em diversas linguagens de programação.
A recursão é útil quando você precisa resolver um problema que pode ser dividido em subproblemas menores do mesmo tipo. Por exemplo, imagine que você deseja calcular o fatorial de um número. O fatorial de um número é o produto de todos os números inteiros menores ou iguais a esse número. Por exemplo, o fatorial de 5 (denotado como 5!) é 5 * 4 * 3 * 2 * 1, ou 120.
Você pode escrever uma função recursiva para calcular o fatorial de um número da seguinte maneira:
def fatorial(n):
if n == 0:
return 1
else:
return n * fatorial(n-1)
Nesta função, a condição de parada é quando n é igual a 0. Nesse caso, a função retorna 1. Caso contrário, a função retorna n multiplicado pelo fatorial de n-1. Isso significa que a função vai continuar se chamando até que n seja igual a 0, quando ela para de se chamar e retorna o resultado final.
Exemplo:
>>> fatorial(5)
120
>>> fatorial(6)
720
É importante ter cuidado ao usar recursão, pois ela pode consumir muita memória e tempo de processamento se não for implementada de maneira correta. Além disso, é importante garantir que haja uma condição de parada para evitar que a função entre em loop infinito.