Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Roberto Navigli
Metodologie di Programmazione 28/04/2021 2
Roberto Navigli
La ricorsione
Frattali di Mandelbrot
Immagini ricorsive
Sogno ricorsivo!
http://www.youtube.com/watch?
v=M59vgZwGPe4
http://www.youtube.com/watch?
v=j0Gx0eCJoWU
Cibo frattale…
Mutua ricorsione
Spingitori di (spingitori di) cavalieri!
Metodologie di Programmazione 28/04/2021 3
Roberto Navigli
Metodologie di Programmazione 28/04/2021 4
Roberto Navigli
28/04/2021 5
Ricorsione vs. Iterazione
• Definizione ricorsiva:
– n! = n*(n-1)! n>0
– 0! = 1 n=0
5!
5 * 4!
4 * 3!
3 * 2!
2 * 1!
1 * 0!
5!
5120
* 4!
4 24
* 3!
3 *62!
2 *21!
1 *1 0!
1 fatt(5)
n=5
chiamante = Fattoriale.main
main(new String[] {})
args = new String[] {}
Fattoriale f = new Fattoriale()
chiamante = JVM
1 fatt(5)
n=5
chiamante = Fattoriale.main
main(new String[] {})
args = new String[] {}
Fattoriale f = new Fattoriale()
chiamante = JVM
StackOverflowError,
un java.lang.Error!
Un’eccezione con
un costruttore!
• Ad esempio, un labirinto:
• Quanto è efficiente?
• E nella versione iterativa?
fib(5)
fib(4) fib(3)
fib(1) fib(0)