# Thread: please help to understand how recursion works in the following program or function.

1. ## please help to understand how recursion works in the following program or function.

Quicksort algorithm where it asks the user to enter 10 integers and it calls quicksort function to sort the array and print all the integers in sorted order.

Code:
```#include<stdio.h>
#define N 10

void quicksort(int a[],int low , int high);
int split(int a[], int low, int high);

int main(void)
{
int a[N], i;

printf("enter 10 no.:");

for(i=0;i<N;i++)
{scanf("%d", &a[i]);}

quicksort(a, 0,N-1);

printf("In sorted order:");
for(i=0;i<N;i++)
printf("%d  ", a[i]);

printf("\n");
return 0;

}

void quicksort(int a[], int low, int high)
{
int middle;

if(low>=high)
return;

middle=split(a,low,high);

quicksort(a,low,middle-1);
quicksort(a,middle+1,high);
}

int split(int a[], int low, int high)
{
int part=a[low];
for( ; ;)
{

while(low < high && part<=a[high])
{
high--;
}
if(low>=high)
break;
else
a[low++]=a[high];

while(low<high && a[low] <= part)
{
low++;
}
if(low>=high)
break;
a[high--]=a[low];

}
a[high]=part;
return high;

}```
please explain the steps in details regarding how recursion takes place in quicksort function. i m confused..sorry Code:
```void quicksort(int a[], int low, int high)
{
int middle;

if(low>=high)
return;

middle=split(a,low,high);

quicksort(a,low,middle-1);
quicksort(a,middle+1,high);
}```

thank you. 2. You can change the code to add print statements and run the code again.
Code:
```void quicksort(int a[], int low, int high)
{
printf("DEBUG: Start sort between %d .. %d\n", low, high);
int middle;

if(low>=high)
return;

middle=split(a,low,high);

quicksort(a,low,middle-1);
quicksort(a,middle+1,high);
printf("DEBUG: End sort between %d .. %d\n", low, high);
}```
> printf("enter 10 no.:");
Then call your function say 3 numbers to start with, rather than 10.
Increase N slowly, until you understand the pattern that emerges. 3. Okay,i will do accordingly.
Thanks Salem. Popular pages Recent additions 