- HubPages»
- Technology»
- Computers & Software»
- Computer Science & Programming
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”:-
- 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.
Your opinion
Did this help you to learn about recursion in C programming language?
Related 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...