MariJ ha scritto:
Vediamo se ho capito cosa intendi ....
Ehm .. no, proprio per niente!
Vediamo se riesco a farti capire bene l'approccio.
Tu invochi direttamente
duplica passando "cane". Questa è la prima invocazione "diretta" (non ricorsiva). L'obiettivo di questa invocazione è di ottenere ovviamente "ccaannee" come risultato finale complessivo.
Visto che non è null/vuota, spezzi la stringa ed ottieni "c" e "ane". Duplichi la prima lettera, ottieni "cc". Quindi invochi ricorsivamente
duplica passando ... "ane". E questo perché l'obiettivo è ottenere a questo livello un risultato parziale di "aannee".
La invocazione con "ane", si porrà le stesse questioni. Spezza ed ottiene "a" (che raddoppierà in "aa") e "ne", ecc...
Riesci a "vedere" la stessa logica che si ripete nei vari livelli di invocazione? Ho "acceso" una luce in più?
P.S. ricorda che in
substring(int beginIndex, int endIndex) il beginIndex è l'indice di inizio
incluso mentre endIndex è l'indice di fine
escluso.