I've put an else if(!isPathViable(row,column)) in the solve function, but It still didn't work. Why won't my recursive call increment to the next column. It doesn't even seem like it's getting called.
Control paths are not sometime things; every function by definition has (at least one) control path that specifies which statements are executed. (Some people call them "flowcharts" and draw them with boxes.) They exist whether or not you pay attention to them.
Recursive calls are fine and all, but a function always returns to where it was called from, so the function that calls itself recursively will still finish and run the rest of the function.