ricorro a voi non riesco a ricorrermi da me (ricorsione maledetta ricorsione)

Credo appunto che freeMemory ritorni la dimensione dello heap libero, mentre la ricorsione consuma lo stack. Dovresti mostrare che lo stack pointer (SPL/SPH) decresce ad ogni chiamata.