Valorizzare un array in maniera ricorsiva

#include<iostream>
#include<ctime>
#include<cstdlib>
#include<string.h>
using namespace std;


/*funzione ricorsiva che valorizza un array con numeri casuali*/
int *valorizza_array(int &n)
{
	/*variabile statica che in definizione non cambia*/
    static  int *tmp=new int(n);
    n--; *(tmp+n)=rand()%100;
    /*funzione ricorsiva che valorizza tmp*/
    return n!=0 ? valorizza_array(n):tmp;
	
}


int main()
{
    srand(time(NULL));
   
	int n=9;
	int tmp=n;
	
	 /*n viene passato per indirizzo quindi alla fine vale 0*/
	int *w=valorizza_array(n);
    for(int i=0;i<tmp;i++)
    cout<<w[i]<<" ";

	
}