Recursive Function


Definition

A function which calls itself is called as recursive function.

Description

  • Are slower in speed becuase of stack overhead.
  • Should have recursive expression with terminating statement.

Source code

  1. //Finding the factorial of given number using recursive function.
  2. #include <conio.h>
  3. #include <stdio.h>
  4. void main()
  5. {
  6. int number,fact;
  7. clrscr();
  8. printf("Enter the number:");
  9. scanf("%d",&number);
  10. fact=factorial(number);
  11. printf("Factorial of given number is %d.",fact);
  12. getch();
  13. }
  14. int factorial(int n)
  15. {
  16. int f=1;
  17. if(n<2)
  18. return f;
  19. else
  20. {
  21. f = n*factorial(n-1);
  22. return f;
  23. }
  24. }

Program working steps

  • First line is the comment, 2nd and 3rd line are preprocessor directives which holds definition of functions like clrscr(), printf(), scanf() etc.
  • void main() is the funtion, where program execution starts.
  • Declaration of variable number to store input number and fact to display the required result.
  • clrscr() function to clear the screen like cls in windows and clear in linux.
  • Next two statements takes the input from the user and stores the value into variable number.
  • Line no.11 calls the factorial function by passing number variable to it. So the program control transfers to line no.15, where a block of code for calculating the factorial of a number is written.
  • factorial function takes one argument from the caller function and stores the value into the variable n of integer data-type.
  • First is the terminating condition if(n<2) then break recursive loop, else part contains recursive expression return n*factorial(n-1) which calls itself.
  • Suppose the user enters 4 as a value then the factorial function will work like,
  • Fist the terminating condition
  • if(4<2) is false so it will execute else part
  • 4*factorial(4-1)
  • this statement calls the factorial function with(4-1)as a argument, so it will again start from first statement.
  • if(3<2) now the value of n is decrease by one, but still condition is false so it will execute else part.
  • 3*factorial(3-1) This statement again calls itself.
  • This will keep repeating till terminating condition becomes true i.e. when n = 1. Then the function will return the calculated value using return f; statement.
  • A closer lookup of the recursive calls
  • f=4*factorial(4-1);
  • f=4*3*factorial(3-1);
  • f=4*3*2*factorial(2-1);
  • f=4*3*2*1;
  • f=16;
  • This calculated f value will be return back to calling functoin to line no.11, where value of fact will be 16.
  • Next printf statement prints the quoted text, 'Factorial of given number is 16.'.
  • getch() to wait input character to exit the program.