ricorsivo
codice:
import java.util.ArrayList;
import java.util.List;

public class Esercizio{
	
	List<String> dizionario = new ArrayList<String>();
	List<String> paroleTrovate = new ArrayList<String>();

	private void inserisci() {//leggere da file il dizionario e caricarlo nell'arraylist
		dizionario.add("mare");
		dizionario.add("mola");
		dizionario.add("lama");
		dizionario.add("remo");
	}

	private void stampa(){
		for(String parola : paroleTrovate) {
			System.out.println(parola); 
		}
	}

	private void processParola(String parola, int numeroCaratteri) {
		this.paroleTrovate.add(parola);
		this.dizionario.remove(parola);
		String fineParola = parola.substring(parola.length() - numeroCaratteri);
		for(String vocabolo : this.dizionario) {
			if(vocabolo.startsWith(fineParola)) {
				processParola(vocabolo, numeroCaratteri);
				return;
			}
		}
	}

	public static void main (String[] args) { //sintassi: java Esercizio <parola iniziale> <numero caratteri>
		Esercizio catena = new Esercizio();
		catena.inserisci();
		catena.processParola(args[0], Integer.parseInt(args[1]));
		catena.stampa();
	}
}