/*CODER: Santostefano Giovanni*/ #include typedef int Type; /*Prototipo della funzione di swap*/ void Swap(Type *a,Type *b); /* Questa funzione inverte * ricorsivamente gli elementi di un * array qualsiasi in un intervallo l..m * sfruttando un metodo ricorsivo. * Lo swap di due elementi รจ affidato ad * una procedura esterna, passata come * puntatore a funzione */ void Reverse(Type a[],int l,int m,void pSwap(Type*,Type*)) { if(l>=m) return; Reverse(a,l+1,m-1,pSwap); pSwap(a+l,a+m); } /*PARTE CLIENT*/ void Swap(Type *a,Type *b) { Type temp=*a; *a=*b; *b=temp; } int main() { int i=0; Type arr[]={1,2,3,4,5,6,7,8,9,10}; Reverse(arr,0,9,Swap); for(;i<10;i++) { printf("%d,",arr[i]); } printf("\n"); return 0; }