Recursão
Um procedimento ou função pode conter uma chamada para outro procedimento dentro dele. Inclusive, a sub-rotina pode chamar a si mesma. Nesse caso, o computador não se importa. Ele também, como sempre, executa consistentemente os comandos que conhece de cima para baixo.
Se você se lembra da matemática, pode encontrar o
princípio da indução matemática. É o seguinte:
alguma afirmação é verdadeira para todo natural
n se
1. é válido para
n = 1
e
2. da validade da afirmação para qualquer
n = k
natural arbitrário, segue-se que ela é verdadeira para
n = k + 1.
Na programação, essa técnica é chamada de
recursão.
Recursão é uma forma de definir um conjunto de objetos em termos do próprio conjunto, com base em dados casos base simples.
Recursivo é um procedimento (função) que chama a si mesmo diretamente ou por meio de outros procedimentos e funções.
Exemplo
def Rec(a):
se (a>0): Rec(a-1)
imprimir(a)
Esquematicamente, o trabalho de recursão pode ser representado por um fluxograma
O procedimento Rec() é executado com o parâmetro 3. Em seguida, dentro do procedimento com o parâmetro 3, é chamado o procedimento com o parâmetro 2, e assim sucessivamente, até que seja chamado o procedimento com o parâmetro 0. Quando o procedimento com o parâmetro 0 é chamado, a chamada recursiva não ocorrerá mais e o procedimento com parâmetro 0 imprimirá o número 0 e sairá. Em seguida, o controle é transferido de volta para o procedimento com o parâmetro 1, ele também termina seu trabalho imprimindo o número 1 e assim por diante. antes do procedimento com o parâmetro 3.
Todos os procedimentos chamados são armazenados na memória até que concluam seu trabalho. O número de procedimentos simultâneos é chamado de profundidade de recursão
.