El problema que yo le veo a la recursividad, mas que la eficiencia en el manejo de memoria es la mantenibilidad y la propensión a errores, ya que es relativamente fácil crear ciclos infinitos, y que los problemas pasen desapercibidos hasta que alguien los encuentra en produccion.
A mi se me hubiera ocurrido algo facilito con un while(). Aunque realmente no estoy seguro si es lo mismo que quieres hacer, este es un pseudo-codigo:
Código PHP:
while($suma < $tope) {
$este_numero = crea_decimal()
$suma += $este_numero;
array_push($numeros, $este_numero);
}