ricorsione

funzioni che chiamano loro stesse

Funzioni ricorsive

Prendiamo come esempio la funzione fattoriale:

fattoriale ( x ) = { 1 se n=1 n*fattoriale(n-1) se n>1

Il modo più facile di scriverla è di tradurre in java quello che c'è scritto nella definizione.

// definizione della funzione
public int fattoriale(int n){
	int risposta;
	if(n==1){
		risposta = 1;
	}else{
		risposta = n * fattoriale (n-1); 
	}
	return risposta;
}

Vediamo come è possibile utilizzare la funzione in un programma, qui sotto è riportato un frammento di codice, la funzione eseguiCalcolo è quella che viene richiamata alla pressione del pulsante

Simulazione fattoriale ricorsivo

avvia programma
pausa

Stack

codice

public void principale()
int a;
a = fattoriale(3);
}
  
public int fattoriale(int n){
int r;
if(n==1){
r = 1;
}else{
r = fattoriale(n-1);
r = n*r;
}
return r;
}

Se in un'altra parte del programma dovesse servire di calcolare di nuovo il fattoriale basterà chiamare di nuovo la funzione fattoriale() senza dover scrivere due volte lo stesso pezzo di codice: il programma sarà più corto e in caso di correzioni si dovrà correggere una sola cosa.