C Programming Lesson - Recursion in C language
By rajkishor09
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”:-
- A recursive function is a function which calls itself.
- The speed of a recursive program is slower because of stack overheads. (This attribute is evident if you run above C program.)
- 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 Video Games for the Evil Genius by Valdean C. Lembke, Thomas E....
Current Bid: $7.50
|
|
|
Stephens' C# Programming with Visual Studio 2010 24-Hou
Current Bid: $25.78
|
| No Photo |
Applications Programming in C++ by Martin Kalin, Ric...
Current Bid: $.95
|
|
|
C Programming Language (2nd Edition) by Brian W. Kerni
Current Bid: $27.98
|
Your opinion
Did this help you to learn about recursion in C programming language?
See results without votingRelated C Tutorials
- C Programming Lesson - Call by Value and Call by Reference
Call by value and call by reference is the most confusing concept among new C language programmer. I also struggled with this, the reason may be my teacher is not explaining it in simple words or I was dumb. Whatever the reason is; here I will try to - C Programming Lesson - Brief History
Before we start any complex program in C, we must understand what really C is, how it came into existence and how it differs from other languages of that time. In this tutorial I will try to talk about these... - Swap two variables without using third variable in C , C# and Java
This article explains how we can swap variable values without using third variable. There are different ways to do so and I tried including all know methods. You can get code in C, Java and C# language. - C Programming Lesson - Function in C
A function in C language is a block of code that performs a specific task. It has a name and it is reusable i.e. it can be executed from as many different parts in a C Program as required. It also optionally returns a value to the calling program So - C Programming Lesson - Types of Function
In my previous c programming tutorial I tried to explain what the function, its advantages is and how to declare a C function. And I told you that there are five types of functions and they are: Functions with no arguments and no return values. Func - C Programming Lesson - Arrays
An array in C language is a collection of similar data-type, means an array can hold value of a particular data type for which it has been declared. Arrays can be created from any of the C data-types int,... - C Programming Lesson - 2D Array
We know how to work with an array (1D array) having one dimension. In C language it is possible to have more than one dimension in an array. In this tutorial we are going to learn how we can use two dimensional arrays (2D arrays) to store values. Bec - C Programming Lesson - Multidimensional array (3D Array)
C allows array of two or more dimensions and maximum numbers of dimension a C program can have is depend on the compiler we are using. Generally, an array having one dimension is called 1D array, array... - C Programming Lesson - Basic Virtual Keyboard Application
To accomplish this task you dont need to buy any expensive software or hardware, only a little knowledge of C program will do and you can build your own musical keyboard software. Before we begin you... - C Programming Lesson - File Copy Program in C
Today we are going to learn a simple file copy program in C language. As I said this is a simple file copy program so you should not expect its output like DOS copy command has. Ok lets start. The main...
This tutorial is very much usefull
I wrote a recursive function using pointers and then my computer vanished down a black hole!
very good
the data made available is to an extent variable and soothing
it's realy useful
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.
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 .
Very nice explanation........i understood very well.....can i get some more points nd programs which will be useful for my campus selection.
thanks it helped
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
very clear explanation
one small doubt: can we use function defination before main() heading i,,e before calling a function ,
WHAT IS DIRECT, INDIRECT, TREE, & TAIL RECURTION?
Nice explanation...... good job bro !
its nice god bless you
very good explanation
this tutorial is awsome for beginners!!!!!
nice
nice explanation....
how to put a codes that displyaing all product to choice.
how to 3 tries to exit???
nice it is good...
types of recursion should b included!!
really helpful
this is really helpful for beginners
good work
SIR,REALLY I NICE YOUR EXPLANATION.SO THAT I AM EVER OBLIGES YOU.




nicomp 22 months ago
Great explanation of recursive functions. Well done.