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, como sempre, executa consistentemente os comandos que conhece de cima para baixo.
Se você se lembra da matemática, então 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;
2) da validade da afirmação para qualquer natural arbitrário n = k segue-se que é verdade 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 casos base simples fornecidos.
Recursivo é um procedimento (função) que chama a si mesmo diretamente ou através de outros procedimentos e funções.
Exemplo de procedimento recursivo:
void Rec(int a)
{
if (a>0) { Rec(a-1); }
Console.WriteLine(a);
}
Esquematicamente, o trabalho de recursão pode ser representado como um fluxograma.
Rec()
o procedimento é executado com parâmetro 3 Em seguida, dentro do procedimento com parâmetro 3, chama-se o procedimento com parâmetro 2, e assim sucessivamente, até chamar o procedimento com parâmetro 0. work. 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.