## CodeNewbie Community is a community of 2,154 amazing newbies

Log in to customize your experience and get involved.

loading... # Recursion in C Programming

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

## Discussion (0) 