18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 16<br />

Tecniche di programmazione<br />

Alcune tecniche di programmazione che sono <strong>alla</strong> base di molte tecniche <strong>per</strong> la gestione<br />

delle informazioni saranno presentate in questo capitolo.<br />

Sostanzialmente ci si concentrerà sulla ricorsione, illustrata di seguito.<br />

16.1 La ricorsione<br />

La ricorsione è una tecnica di programmazione che viene realizzata facendo in modo che una<br />

funzione richiami sè stessa. Una funzione ricorsiva è la funzione che richiama sè stessa.<br />

La ricorsione è una tecnica molto utile poichè <strong>per</strong>mette di implementare in modo chiaro ed<br />

elegante molti algoritmi che si prestano ad un tipo di implementazione ricorsiva. Molti di tali<br />

algoritmi sono spesso esplicitamente definiti in termini ricorsivi. Alcuni esempi sono:<br />

• la ricerca in un albero o in un grafo;<br />

• la generazione di forme regolari (frattali, insiemi di Mandelbrot, ecc.)<br />

• il calcolo di funzioni (es. il fattoriale, ecc.);<br />

• la generazione di successioni di numeri (es. i numeri di Fibonacci, ecc.)<br />

Per esempio il seguente programma calcola l’i-esimo numero di Fibonacci. Il valore di i viene<br />

letto d<strong>alla</strong> linea di comando.<br />

Come noto, i numeri di Fibonacci si ottengono sommando i due numeri precedenti nella<br />

sequenza. Matematicamente parlando, assegnati i primi due valori della successione a0 = 0 e<br />

a1 = 1, si ha che<br />

ai = ai−2 + ai−1, i ≥ 2<br />

La sequenza dei primi 20 numeri numeri è dunque<br />

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765<br />

e il calcolo dell’i-esimo numero della serie può essere effettato richiamando ricorsivamente la<br />

funzione che somma i due numeri precedenti della successione.<br />

149

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!