THINKING IN RECURSION
1. When you think of recursion, think of the “base case” first and put it as the first line inside recursive function.
2. All the values used in the recursive function should be passed as input parameters in the function (rather than declaring inside the function).
3. Any “calculated value” inside the recursive function should be in the “return value” of the recursive function. Example - output = quickselect(A, p, q – 1, k, output)
4. “Returning part” i.e. the return statement should be in the end of the recursive function (unless it’s a base case).
5. Think of recursion as box inside a box inside a box inside a box…..till the base case.
Refer http://lazynreclined.blogspot.in/2016/10/algorithms-quicksort.html for Quickselect recursive function