The subroutine should actually have a return value and should not output anything itself, so that the main program makes sense.
Currently your code looks like this:
int prime(int n, int i)
{
if(i == 1)
printf("Yes");
else
{
if(n%i == 0)
printf("No");
else
prime(n, i-1);
}
}
Instead of the output of printf("Yes") there should be return 1. The following else could then be omitted. Accordingly, printf("No") should be replaced.
Unfortunately, your design crashes at both 0 and -1 and for other negative numbers the result is wrong.
I agree with OriginalGriff's suggestion not to start testing at n/2 and then count down, but rather to test the other way around.
If you want you can write the function isprime() with one parameter like this:
int isprime(int num)
{
return prime(num, num / 2);
}