non mi pare sia necessaria una funzione ricorsiva, anche perchè non riesco a definire una Fn(1) e una Fn(N) per impostarla. Un esempio diverso:

Codice PHP:
//inizializzo gli oggetti da estrarre
$objects = array();
for(
$i=0;$i<7;$i++)
    
$objects[] = "obj$i";

function 
estrai($objects=array(),$max=3,$base=3,$moltiplicatore=2){

    
$estratti = array();
    for(
$i=0;$i<$max;$i++){
        
$indx rand(0,count($objects)-1); //estrao un oggetto a caso
        
if(!array_key_exists($objects[$indx],$estratti)) 
        
$estratti[$objects[$indx]]=$base//mai estratto, assegno come valore estrazione il valore $base
        
else
        
$estratti[$objects[$indx]] *= $moltiplicatore//già estratto, moltiplico il valore accumulato per $moltiplicatore
    
}    
    return 
$estratti;
}

print_r(estrai($objects)); 
per il tuo caso