# Recursive function in C programming language

We have learnt different types function C language and now I am going to explain recursive function in C. A function is called “recursive” if a statement within body of that function calls the same function for example look at below code:

void main()
{
printf(“recursive function called.\n”);
main();
}

When you will run this program it will print message “recursive function called.” indefinitely. If you are using Turbo C/C++ compiler then you need to press Ctrl + Break key to break this in definite loop.

## Recursive function example output

Before we move to another example lets have attributes of “recursive function”:-

1. A recursive function is a function which calls itself.
2. The speed of a recursive program is slower because of stack overheads. (This attribute is evident if you run above C program.)
3. A recursive function must have recursive conditions, terminating conditions, and recursive expressions.

## Calculating factorial value using recursion

To understand how recursion works lets have another popular example of recursion. In this example we will calculate the factorial of n numbers. The factorial of n numbers is expressed as a series of repetitive multiplication as shown below:

Factorial of n = n(n-1)(n-2)……1.

Example :

Factiorial of 5 = 5x4x3x2x1
=120

```#include<stdio.h>
#include<conio.h>

int factorial(int);

int factorial (int i)
{
int f;
if(i==1)
return 1;
else
f = i* factorial (i-1);
return f;
}

void main()
{
int x;
clrscr();
printf("Enter any number to calculate factorial :");
scanf("%d",&x);
printf("\nFactorial : %d", factorial (x));
getch();
}```

## Factorial value using recursive function output

So from line no. 6 – 14 is a user defined recursive function “factorial” that calculates factorial of any given number. This function accepts integer type argument/parameter and return integer value. If you have any problem to understand how function works then you can check my tutorials on C function (click here).

In line no. 9 we are checking that whether value of i is equal to 1 or not; i is an integer variable which contains value passed from main function i.e. value of integer variable x. If user enters 1 then the factorial of 1 will be 1. If user enters any value greater than 1 like 5 then it will execute statement in line no. 12 to calculate factorial of 5. This line is extremely important because in this line we implemented recursion logic.

Let’s see how line no. 12 exactly works. Suppose value of i=5, since i is not equal to 1, the statement:

f = i* factorial (i-1);

will be executed with i=5 i.e.

f = 5* factorial (5-1);

will be evaluated. As you can see this statement again calls factorial function with value i-1 which will return value:

4*factorial(4-1);

This recursive calling continues until value of i is equal to 1 and when i is equal to 1 it returns 1 and execution of this function stops. We can review the series of recursive call as follow:

f = 5* factorial (5-1);

f = 5*4* factorial (4-1);

f = 5*4*3* factorial (3-1);

f = 5*4*3*2* factorial (2-1);

f = 5*4*3*2*1;

f = 120;

I hope this will clear any confusion regarding recursive function.

See results without voting

## More by this Author

nicomp 6 years ago from Ohio, USA

Great explanation of recursive functions. Well done.

Nikhil 6 years ago

This tutorial is very much usefull

PDXBuys 6 years ago from Oregon

I wrote a recursive function using pointers and then my computer vanished down a black hole!

karim 6 years ago

very good

saloni 6 years ago

the data made available is to an extent variable and soothing

nivedita 5 years ago

it's realy useful

abhijit 5 years ago

if we want to calculate the factorial of 0 den will d above program work as the terminating condition of the program is an if statement.

sara 5 years ago

write a recursive value that asks the user to enter a positive intger number each time it is called , until zero or negative number is input . the function then outputs the greatest number thus far as it outputs the number is reverse order . it returns the greatest value input . write a main program to call the function and prints the result .

shilpa 5 years ago

Very nice explanation........i understood very well.....can i get some more points nd programs which will be useful for my campus selection.

sahil green 5 years ago

thanks it helped

Dharmendra kumar yadav 5 years ago

hi

sir nice job .it is very simple to understand .i understand

with in 2 min recursive function . it means read and learn .

nice ....................good job

Good explanation well done

mallika 5 years ago

very clear explanation

siddhu 5 years ago

one small doubt: can we use function defination before main() heading i,,e before calling a function ,

ASHA 5 years ago

WHAT IS DIRECT, INDIRECT, TREE, & TAIL RECURTION?

Arnab Mallick, Bangalore 5 years ago

Nice explanation...... good job bro !

sree 5 years ago

its nice god bless you

suhani thakur 5 years ago

very good explanation

saurabh 5 years ago

this tutorial is awsome for beginners!!!!!

sandeep choudhary 5 years ago

nice

rajeev singh 5 years ago

nice explanation....

mart 5 years ago

how to put a codes that displyaing all product to choice.

rheck 5 years ago

how to 3 tries to exit???

rey 5 years ago

nice it is good...

sneha jha 4 years ago

types of recursion should b included!!

paritosh kumar 4 years ago

Sonali Naik 4 years ago

this is really helpful for beginners

sandeep 4 years ago

good work

BHOJESH.L.AHIR 4 years ago

SIR,REALLY I NICE YOUR EXPLANATION.SO THAT I AM EVER OBLIGES YOU.

JAYPRAKASH 4 years ago

THIS IS VERY GOOD EXPLANATION......

types of recursion should b included!!

manu 4 years ago

THANKS SIR,

snehal 3 years ago

there are the pattern

in the A

2 B

4 C 6

D 8 E 10

there program i am not parporaly writter ......... plze help me.

deepika 3 years ago

int f(int x)

{

if(x!=0)

{

f(x-1);

printf("%d",x);

}

}

void main()

{

int x=5;

f(x);

}

send ans for ths n how does it get implement???

deepika7893 3 years ago

int f(int x)

{

if(x!=0)

{

f(x-1);

printf("%d",x);

}

}

void main()

{

int x=5;

f(x);

}

send ans for ths n how does it get implement???

shiva 2 years ago

thank u