Resources » Articles/Knowledge Sharing » Education

How To Write A C Program To Find Factorial Using Recursion


Posted Date: 11-Feb-2011  Last Updated:   Category: Education    
Author: Member Level: Silver    Points: 15


Guide on use recursion in c. Readers will also learn how to write a program to find the factorial of a number using recursive function. Necessary algorithms and code examples are given within the article.



How to write a C program to find the factorial of a number using recursion.

Recursion is a good technique in C which can be very beneficial in C if used in wise and error free manner. Recursion means the phenomenon of a function invoking itself. Use of recursion results in less amount of coding and lowers the bulk of the program but increases the logical complexity overall, so
practice recursion if you have a good hold on your algorithm and it will help you if used successfully. Finding a factorial of a number using recursion is a good way to understand functionality and implementation of recursive
techniques.

Sequential Algorithm :

1.Take the number from user(say n,you will find the factorial of this number).
2.create an int variable (say var) and assign it to 1.
3.var=var*n
4.n=n-1
5.go to step 3 unless n==1
6.output var as the required factorial.

Recursive Algorithm :

module A(main function):
1.take the input from the user.
2.check and make sure it is a positive number.
3.pass the number to module B.
4.Print the value returned by module B as the required factorial.

module B(user defined function)
1.accept the value from calling module.
2.check if it is 1 , if yes return 1 to calling module.
3.decrement the value of the argument by 1.
4.pass it to module B.
5.get the value returned by module B and return it to calling module after multiplying it by the actual argument.

code::

#include
#include

int fact(int n);

void main()
{
int n;
clrscr();
printf("/nEnter an integer:");
scanf("%d",&n);
printf("/nThe factorial of % is = %d",n,fact(n));
getch();
}


int fact(int n)
{
if(n==1)
return 1;
else
return(n*fact(n-1));
}



Explanation : Well it is actually pretty self explanatory, the main function is pretty basic and doing only input output work and calling the user defined function fact() with an argument. fact() receives an argument and checks if it is 1 , if yes it immediately sends back 1 to the calling function. In the else case it again calls the fact() function (itself) with the original argument decremented by one and returns to the calling function whatever value it is returned by the called function multiplied by the original argument. This calling the oneself thing with C functions is known as recursion.
Let us check how it works with an example, suppose the user enters 3 as input.

fact(3) is called

fact receives 3 , argument is not 1 , hence fact(2) is called

fact receives 2 , argument is not 1 , hence fact(1) is called

fact receives 1 , argument is 1 , hence 1 is returned

2*1 is returned

3*2*1 is returned

6 is printed as the factorial

understanding the work of functions in these different levels is all you need to understand how this program works. Hope I have done a good job explaining. But keep one thing in mind if not used correctly recursion can easily lead to never ending loops inside your program execution, for example in this case if we pass a negative number to fact() it will never become 1 no matter how many times we decrement it and the recursion process will go on endlessly. That's it now you know how to find the factorial of a number using recursion in C.


Did you like this resource? Share it with your friends and show your love!




Responses to "How To Write A C Program To Find Factorial Using Recursion"

No responses found. Be the first to respond...

Feedbacks      

Post Comment:




  • Do not include your name, "with regards" etc in the comment. Write detailed comment, relevant to the topic.
  • No HTML formatting and links to other web sites are allowed.
  • This is a strictly moderated site. Absolutely no spam allowed.
  • Name:   Sign In to fill automatically.
    Email: (Will not be published, but required to validate comment)



    Type the numbers and letters shown on the left.


    Submit Article     Return to Article Index

    Awards & Gifts
    Active Members
    TodayLast 7 Daysmore...

    ISC Technologies, Kochi - India. Copyright © All Rights Reserved.