In realtà, gli algoritmi sono dei meccanismi logici che permettono, attraverso un set di istruzioni, di restituire un risultato ad un insieme di dati ricevuti in ingresso e sono utilizzati da ogni tipo di sistema tecnologico sia fisico che digitale.
Un esempio lampante è rappresentato dai social, le app e i software che utilizziamo tutti i giorni e che fanno uso di una miriade di algoritmi che interagiscono tra di loro per risolvere problemi di qualsiasi genere. È luogo comune, infatti, pensare che un programma/applicazione sia formato da un unico algoritmo o che siano la stessa cosa, in realtà con il termine “programma” in ambito informatico si intende un sistema formato da uno o più algoritmi che fanno anche utilizzo di strutture dati (modelli di rappresentazione dei dati).
Come è facile intuire gli algoritmi possono avere diverse forme strutturali: una classificazione molto nota che affronta la risoluzione dei problemi in modi molto differenti sono gli algoritmi iterativi e algoritmi ricorsivi (sostanzialmente le due tipologie possono risolvere anche lo stesso problema).
Vediamo quali sono i loro significati in campo informatico.
Algoritmo iterativo
L’iterazione avviene all’interno di cicli che vengono svolti fino a quando non viene soddisfatto il la condizione di ciclo; questo è costituito dalla cosiddetta “condizione di ripetizione” che controlla se necessario ripetere il ciclo oppure no.
Nei linguaggi di programmazione questo algoritmo è utilizzato mediante le strutture cicliche come “for…next” oppure “do….while”
Algoritmo ricorsivo
La ricorsione invece avviene mediante una sorta di analisi interna. In informatica, infatti, questo viene effettuato con il richiamo di specifici moduli (o funzioni) posti all’interno della procedura madre che vengono eseguiti in continuazione auto-richiamandosi fino a quando la condizione basilare di partenza non viene riconosciuta come effettuata.
Ad esempio questo tipo di sistema è utilizzato negli algoritmi di ordinamento dei dati.
Vantaggi e Svantaggi
Entrambi gli algoritmi sono validi per la soluzione di qualsiasi tipo di problema, ma quali sono i loro vantaggi e/o svantaggi?
Ricorsivi
L’algoritmo è ramificato all’interno delle sub o delle funzioni che compongono il main della procedura. Questo comporta un utilizzo maggiore sia delle risorse (memoria fisica per gli swap e memoria RAM e CPU per l’elaborazione) oltre che di tempo.
In caso di errore con cicli infiniti, è più complesso stabilire il punto di errore in quanto le variabili di input possono essere molte e sparse all’interno della procedura.
Iterativi
L’algoritmo è racchiuso all’interno del modulo stesso ed ha una struttura ciclica dove il processo ha fine nel momento in cui la condizione di partenza si avvera con la variabile di controllo del ciclo che inevitabilmente diventa falsa.
Se questa unica variabile di controllo non cambia mai stato allora si hanno un numero di cicli infinito.