ma com'è possibile che all'interno della funzione ricursiva ci sia un $_GET... poi sarà che sto stanco ma non ce capisco una mazza di quello che dovrebbe fare lo script... che cos'è il parametro in ingresso, un array contenente cosa?

cmq fai così, due funzioni: la prima "prepara quello che serve" (e quindi sarà la sola ad usare $_GET e la seconda sarà chiamata dalla prima per elaborare quell'array che passi e la chiamata recursiva la farà su se stessa