Ti consiglio di leggere i consigli di questo post, si parla dello stesso identico problema
https://q2a.di.uniroma1.it/16277/hw8-di-recupero-qualche-consiglio?course=advices/fondamenti-di-programmazione-19-20
Comunque i consigli sono gli stessi:
- Cerca di velocizzare il programma non ripetendo sempre le stesse operazioni
Se riesci, quando chiami la ricorsione e fai un certo percorso, salvati le concatenazioni delle stringhe che usi, così la prossima volta che ti servirà quel percorso lo avrai già disponibile sotto forma di stringa e non dovrai richiamare di nuovo la ricorsione per lo stesso identico percorso.
Esempio:
pezzi_0.txt: ottuso iodato coniglio
ottuso -> None [0 sottostringhe] |||| None
iodato -> o -> ottuso [1 sottostringa] |||| [iodatottuso]
coniglio -> o -> ottuso | coniglio -> io -> iodato |||| [2 sottostringhe ] --> [conigliodatottuso] OPPURE [conigliottuso]
In "coniglio" ti salvi i due percorsi che può compiere la parola, e risparmi il tempo dell' overhead della chiamata di funzione per la ricorsione.