In general, you want your methods to have as few side-effects as possible. These include asking users for keyboard input and giving user screen output. Your methods should do something and return something that the rest of your code can use.
In this case, it's a string. What you end up doing with that string (such as printing it out to the screen) should be independent of what the method is doing. There are some obvious exceptions to this rule, but I wouldn't consider this one of them (unless your professor specifically stated that you can't return a string and print it out later).
That asside, analyze the way the recursion reduces the problem. It reduces it by removing the least significant digit
, so you want to append the "correction factor" after you print out the solution of the simplified problem. Another thing I would recommend is changing all your println's to prints. This way your output is all on one line rather than having 1 number per line (unless that's an assignment requirement). printing it out as one string at the end fixes this problem automatically.
printLines(n/10); // it's very important you have it in this order!
// the same code as the above two lines if you're returning a string
return printLines(n/10) + printLines(n%10); // Note: while the second call to printLines isn't necessary, I did it because it will make this code more "general".