The way that can be used in this particular exercise is as follows: suppose that a single call to reverse_print_array() just prints the last element of the array it is given (assuming the array is not of zero length), and then calls itself (i.e. another copy of reverse_print_array()) to print the rest of the array (i.e. passing on the same array it was given, except "minus" the last element). And if reverse_print_array() is called with a zero array length argument, it should simply return immediately - that allows the recursion to "unwind" with all the copies of the function then exiting in turn, until we finally get back to the main() function. Of course, the idea of passing on the array "minus" the last element can be achieved simply by passing on a array length argument which is one less that the argument which has been passed in - the array "itself" does not actually have to be modified.