# Programming Videos

## Search

### C, C++ Program to Reverse an Array using Recursion

Write a C, C++ program to reverse an array using recursion. Given an input array, we have to write a code that reverse an array using recursion.

I assume you are familiar with the concept of recursion and the difference between iteration and recursion.  Let's quickly go through the concept of recursion.

In recursion, A function call itself until the base condition is reached.

Reverse a number using recursion

Let's assume user has input following array values.

```// Input array

int arr[] = {3,2,1,7,8}

// Reverse of an input array

arr[] = {8,7,1,2,3}```

I already discussed how to reverse an array  using iterative approach in my previous post.  In this post, we'll write a code to reverse an array using recursion.

## C Program to Reverse an Array using Recursion

```#include <stdio.h>

int reverse(int arr[],int start,int end){

int temp;

// if start is less than end

if(start < end){

/* Swap the position of an element. */

temp       = arr[start];
arr[start] = arr[end];
arr[end]   = temp;

/*calling itself
*Incrementing start and decrementing end
*/
reverse(arr, start+1, end-1);

}

return 0;
}

int main(void) {

// Decare an array

int arr[] = {3,2,1,7,8};

int n = 5;

/* Call reverse method */

reverse(arr, 0, n-1);

printf("Reverse of an array \n");

for(int i = 0; i < n; i++){

printf("%d ",arr[i]);
}

return 0;
}

```

## C++ Program to Reverse an Array using Recursion

```#include <iostream>

using namespace std;

int reverse(int arr[], int start, int end) {

int temp;

if(start < end) {
temp        = arr[start];
arr[start]  = arr[end];
arr[end]    = temp;

// recursive function call
reverse(arr, start+1, end-1);
}

return 0;
}

int main() {

int n, arr, i;

cout << "Enter the size of an array \n";
cin  >> n;

cout << "Enter an element of an array \n";

for(i = 0; i < n; i++) {
cin >> arr[i];
}

reverse(arr, 0, n-1);

cout << "Reverse of an array is \n";

for(i = 0; i < n; i++) {
cout << arr[i] << " ";
}

return 0;
}

```

Output :

Enter the size of an array 5

Enter an element of an array
2 3 5 6 7

Reverse of an array is
7 6 5 3 2

Swap two numbers using third variable.

Swap two numbers using pointer(call by reference).

Swap two numbers without using third variable.