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