Una procedura o funzione può contenere al suo interno una chiamata a un'altra procedura. Compreso, la subroutine può chiamare se stessa. In questo caso, al computer non importa. Lui, come sempre, esegue costantemente i comandi che ha incontrato dall'alto verso il basso.
Se ricordi la matematica, allora lì puoi incontrare il principio dell'induzione matematica. È come segue: qualche affermazione è vera per ogni naturale n if
1) è valido per n = 1;
2) dalla validità dell'affermazione per ogni naturale arbitrario n = k ne consegue che è vera per n = k+1.
In programmazione, questa tecnica è chiamata ricorsione.
La ricorsione è un modo per definire un insieme di oggetti in termini dell'insieme stesso, basato su dati casi base semplici.
Ricorsivo è una procedura (funzione) che richiama se stessa direttamente o tramite altre procedure e funzioni.
Esempio di procedura ricorsiva:
void Rec(int a)
{
if (a>0) { Rec(a-1); }
Console.WriteLine(a);
}
Schematicamente, il lavoro di ricorsione può essere rappresentato come un diagramma di flusso.
Rec()
la procedura viene eseguita con parametro 3 Poi, all'interno della procedura con parametro 3, viene chiamata la procedura con parametro 2, e così via, fino a quando viene chiamata la procedura con parametro 0. work. Poi il controllo viene ritrasferito alla procedura con il parametro 1, anch'essa termina il suo lavoro stampando il numero 1, e così via. prima della procedura con parametro 3.
Tutte le procedure chiamate vengono archiviate in memoria finché non completano il loro lavoro. Il numero di procedure concorrenti è chiamato profondità di ricorsione.