>print_random n-1;
これが(print_random n)-1;と解釈されるからだな
print_random (n-1);とすればよろし