This seemingly right code, don't know why gives 0 always as output. Please, help debugging it...

Code:
#include <stdio.h>

int min(int *arr,int size)
{
	static int *m;

	if(!m) m=arr;

	return size ? ( *m>*++arr ? min((m=arr),size-1) : min(arr,size-1) ) : *m;
}

int main(void)
{
	int i,size;

	printf("Enter array size:");
	scanf("%d",&size);

	int arr[size];

	printf("Enter array elements:");
	for(i=0;i<size;i++)
	scanf("%d", arr+i);

	printf("The minimum no. is %d",min(arr,size));

	return 0;
}