Flag This Hub

C Programming Lesson - Recursion in C language

By


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

See all 2 photos

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.

Programming in C (3rd Edition)
Amazon Price: $24.00
List Price: $49.99
Parallel Programming in C with Mpi and Openmp
Amazon Price: $94.50
Gtk+ Programming in C
Amazon Price: $21.39
List Price: $44.99
Practical FPGA Programming in C
Amazon Price: $63.63
List Price: $84.99

Your opinion

Did this help you to learn about recursion in C programming language?

  • Yes
  • No
  • Need more examples
See results without voting

nicomp 22 months ago

Great explanation of recursive functions. Well done.

Nikhil 21 months ago

This tutorial is very much usefull

PDXBuys 18 months ago

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

karim 17 months ago

very good

saloni 16 months ago

the data made available is to an extent variable and soothing

nivedita 14 months ago

it's realy useful

abhijit 14 months 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 12 months 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 9 months 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 6 months ago

thanks it helped

Dharmendra kumar yadav 6 months 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

Adam 6 months ago

Good explanation well done

mallika 6 months ago

very clear explanation

siddhu 5 months ago

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

ASHA 5 months ago

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

Arnab Mallick, Bangalore 5 months ago

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

sree 5 months ago

its nice god bless you

suhani thakur 5 months ago

very good explanation

saurabh 4 months ago

this tutorial is awsome for beginners!!!!!

sandeep choudhary 4 months ago

nice

rajeev singh 4 months ago

nice explanation....

mart 4 months ago

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

rheck 4 months ago

how to 3 tries to exit???

rey 4 months ago

nice it is good...

sneha jha 3 months ago

types of recursion should b included!!

paritosh kumar 3 months ago

really helpful

Sonali Naik 3 months ago

this is really helpful for beginners

sandeep 3 months ago

good work

BHOJESH.L.AHIR 2 months ago

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

Submit a Comment
Members and Guests

Sign in or sign up and post using a hubpages account.



    Like this Hub?
    Please wait working