In this tutorial, we will study what is recursion in c programming, the structure of the recursion function, the advantages and disadvantages of recursion in c, the types of recursion, and the factorial of a number using recursion.
Recursion in C Programming
Recursion is a process in which the function calls itself. Recursion is used to solve a problem by dividing it into small parts. Such functions which call themselves are called recursive functions.
Structure of Recursive Function
return type myFunction(Parameters-list)
{
statement 1;
statement 2;
…
statement N;
myFunction(Arguments-list);
…
other statements;
}
Advantages and Disadvantages of Recursion in c
Advantages
- If we solve a problem through Recursion, then there is no need to call the function again and again. If we call the function 1 time, it keeps calling itself till the end result comes.
- The same problem is easily solved in recursion.
Disadvantages
- Recursive programs are slower than normal programs.
- Requires consuming extra memory.
Types of Recursion in C
Direct Recursion
Direct recursion is a recursion in which a function calls itself.
return_type MyFunction(parameter-list)
{
statements;
MyFunction(argument-list);
other statements;
}
Indirect Recursion
In this, one function calls another function which in return calls it itself.
First Function
return_type FunctionOne(parameter-list)
{
statements;
FunctionTwo(argument-list);
other statements;
}
Second Function
return_type FunctionTwo(parameter-list)
{
statements;
FunctionOne(argument-list);
other statements;
}
Factorial of a Number Using Recursion
#include <stdio.h>
#include <conio.h>
long int fact(int n);
int main()
{
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
printf("Factorial of %d = %ld", n, fact(n));
return 0;
}
long int fact(int n)
{
if (n >= 1)
return n*fact(n-1);
else
return 1;
}
Output
Enter a positive integer: 4
Factorial of 4 = 24
Originally posted on alimammiya.hashnode.dev
Top comments (1)
Small tip.
If you put your main() at the bottom, you can loose the fact() prototype.