Ho un problema sul quale mi sono bloccato ma non riesco a capirne il perchè visto che la logica mi sembra quella giusta.

Ho un JSON dal quale devo leggerne i valori stile albero attraverso una funzione ma purtroppo mi va in un loop infinito. Vi posto il codice purtroppo io non riesco a vederlo l'errore forse perchè son convinto che sia la giusta logica

codice:
    <script>
        function costruisciExp(str) 
        {
            var j = JSON.parse(str);
            
            var risultato = j[0].valore;
            risultato += startBuild(j[0]);
            console.log(risultato);
        }
        
        function startBuild (ogg)
        {
            var risultato = "";
            for (i=0; i<ogg.nodiSub.length; i++) 
            {
                risultato += ogg.nodiSub[i].valore + ",";
                if(ogg.nodiSub[i].nodiSub.length != 0)
                {
                    startBuild(ogg.nodiSub[i]);
                }
            }
            return risultato;    
        }
    
        var prova = "[{\"valore\":\"DECODE\",\"nodiSub\":[{\"valore\":\"TRIM\",\"nodiSub\":[{\"valore\":\"DESCRIZIONE\",\"nodiSub\":[]}]},{\"valore\":\"''\",\"nodiSub\":[]},{\"valore\":\"DOMINIO\",\"nodiSub\":[]},{\"valore\":\"TRIM\",\"nodiSub\":[{\"valore\":\"DESCRIZIONE\",\"nodiSub\":[]}]}]}]";
        costruisciExp(prova);
  </script>
Senza la ricorsione mi funziona bene.
Confido in un vostro aiuto, grazie.