Move Line across Plane
Your code has a lot of magic numbers.  I can't tell what the significance of the number 20 that is being compared to y1, or the significance of the 20 that is being compared to x1, or whether the two numbers are the same or different (if I changed the number compared to y1 to 30, should I also change the number compared to x1?).  One of the comparisons uses > and the other uses >=.  I can't tell whether this is what you meant to do or a bug.  

If you created named constants with descriptive names, probably all of those things would be obvious.  

I think you have a misconception about how function arguments work.  Despite having the same name and the same type, the int x1 in main() and the int x1 in moveLine() are different, and the x1 in each recursive call of moveLine() are different.  

The line moveLine(x1 += 9, y1, x2+=9,y2); should work, but writing it as moveLine(x1+9, y1, x2+9, y2); is less confusing and would also work.  

Also, this code:

int x1 = 5;
int y1 = 0;
int x2 = 5;
int y2 = 10;
moveLine(x1, y1, x2, y2);


could be written like this:

moveLine(5, 0, 5, 10);


(I'm not suggesting you keep the 4 int style; Barry's suggestion is good.  I'm just pointing out what looks like a misconception and trying to clear it up.)