This problem can be performed in o(n) with normal iterative approach.
Here is vanilla flavor of its implementation in recursion
#include /** * Recursion version of array swap * * Kaleb Woldearegay */ void reverse(int*arr, int i, int size); void print(int*arr, int size); void main() { int nums[] = {4,5,2,13,0}, i=0, size=5; i = 0; print(nums, 5); reverse(nums, i, size-1); print(nums, 5); } void reverse(int*stk, int i, int size) { if (i>=size) { return; } else { int tmp = stk[i]; reverse(stk, i+1, size-1); stk[i] = stk[size]; stk[size] = tmp; } } void print(int*nums, int size) { int i=0; while (i<size) { printf("%in", nums[i]); i++; } }