Queste sono le piccole sottigliezze della programmazione In pratica per funzionare avresti dovuto fare ++$level e NON $level++ in quanto la prima istruzione PRIMA incrementa il valore e POI lo utilizza, invece il secondo formato PRIMA utilizza il valore e POI lo incrementa.
Nel caso specifico (chiamata ricorsiva) in realtà veniva passato alla funzione sempre lo stesso valore!