Recursive function missing out the base condition
suggest changeCalculating the factorial of a number is a classic example of a recursive function.
Missing the Base Condition:
#include <stdio.h>
int factorial(int n)
{
       return n * factorial(n - 1);
}
int main()
{
    printf("Factorial %d = %d\n", 3, factorial(3));
    return 0;
}
	Typical output: Segmentation fault: 11
The problem with this function is it would loop infinitely, causing a segmentation fault — it needs a base condition to stop the recursion.
Base Condition Declared:
#include <stdio.h>
int factorial(int n)
{
    if (n == 1) // Base Condition, very crucial in designing the recursive functions.
    {
       return 1;
    }
    else
    {
       return n * factorial(n - 1);
    }
}
int main()
{
    printf("Factorial %d = %d\n", 3, factorial(3));
    return 0;
}
	Sample output
Factorial 3 = 6
	This function will terminate as soon as it hits the condition n is equal to 1 (provided the initial value of n is small enough — the upper bound is 12 when int is a 32-bit quantity).
Rules to be followed:
- Initialize the algorithm. Recursive programs often need a seed value to start with. This is accomplished either by using a parameter passed to the function or by providing a gateway function that is non-recursive but that sets up the seed values for the recursive calculation.
 - Check to see whether the current value(s) being processed match the base case. If so, process and return the value.
 - Redefine the answer in terms of a smaller or simpler sub-problem or sub-problems.
 - Run the algorithm on the sub-problem.
 - Combine the results in the formulation of the answer.
 - Return the results.
 
Source: Recursive Function
  Found a mistake? Have a question or improvement idea?
  Let me know.
      
      Table Of Contents