Also Bonkers ich muss dir natürlich recht geben, dass die Art mit den vielen For Schleifen nicht so besonders schön ist (nicht flexibel, man kann nicht so ohne weiteres die Länge auswählen etc.). Aber der Code wie du ihn gepostet hast hat einige Nachteile was die Performance betrifft.
1. Das charset wird innerhalb der Funktion die Rekursiv aufgerufen wird deklariert. Das bedeutet, dass bei jedem Aufruf ein neues char Array mit dem Charset als Inhalt erzeugt wird. Das ist nicht sonderlich performant. Das sollte eher als Parameter übergeben werden von der FUnktion die die Rekursive Funktion aufruft.
2. Du rufst immer wieder die Funktion strlen auf. Einmal aufrufen und ab da dann immer übergeben und als feste Variable verwenden wäre wesentlich schneller.
3. Du kopierst den String immer wieder. Auch das führt zu einem erheblichen Performance Verlust. Das ist bei Gaaras Source Code nicht der Fall. In der Hinsicht hin ist sein Source Code wesentlich perdormanter als deiner.