Scrivere una funzione ricorsiva che trova il massimo in una lista.
Domanda: Ci mette meno del normale algoritmo che useremmo per trovare il massimo in una lista?
Soluzione:
Trovare il massimo usando la ricorsione è abbastanza semplice, l’idea è di prendere il primo elemento della lista e confrontarlo con il massimo che uscirà dal resto della lista.
Se è più grande, il massimo è lui, altrimenti, sarà quello che è uscito dal resto della lista:
ovviamente questa funzione non ha un caso base: NON sa quando fermarsi, in pratica se la lista che gli passiamo ha un solo elemento quello sarà il massimo
Questo già funziona di suo… Ma il fatto che chiamo due volte massimo_ricorsivo sugli stessi dati è un po’ una schifezza. Posso semplicemente tenere il risultato in una variabile
Ci mette di meno del normale algoritmo iterativo?
No, per niente, ci mette asintoticamente lo stesso tempo, e anzi, forse di più.
Esercizio 1
Fai una funzinoe ricorsiva che sommi una lista del tipo:
SOLUZIONE esercizio 1:
il problema di un normale approccio iterativo in questo caso è che quando incontro una lista, vorrei che il mio algoritmo si infilasse dentro anche a quella lista e sommasse anche quegli elementi, invece mi da errore:
Quindi quello che voglio fare è:
se trovo un numero sommalo
se trovo una lista, trova la somma in quella lista
Come faccio a trovare una somma in quella lista? ricorsione