Quote Originariamente inviata da cerza Visualizza il messaggio
Per cui le invocazioni ricorsive fatte dai livelli più alti non possono essere in alcun modo fermate, giusto?
Certo che si può, basta far ritornare dal livello più "basso" una indicazione (es. false = ferma tutto), che il metodo dovrà ovviamente testare e quindi potrà fare subito un return false, il livello ancora più alto vedrà false e ritornerà false, ecc...
È così che si può (e si dovrebbe) ragionare.

Adesso, quando invochi ricorsivamente treeSplit2(collectionSet, string) non testi nulla.

Quote Originariamente inviata da cerza Visualizza il messaggio
Ma alla fine se mettessi una variabile locale e modificassi il tipo di ritorno del metodo non è la stessa cosa? quale la scelta migliore?
Non ho capito cosa c'entra una variabile locale .... ogni invocazione di un metodo ha il suo stack frame, le sue variabili locali.
Non puoi far "comunicare" due invocazioni di metodi (anche se fosse lo stesso metodo) solo di per sé con una variabile locale ..... a meno che tenga il riferimento ad un oggetto "condiviso" che ha stato mutabile. Ma dimentica questo pezzetto ...