How to write a c program to find factorial using recursion

Basics and Algorithms

Recursion is a good technique in C which can be very beneficial if used in wise and error free manner . Use of recursion

results in less amount of coding and lowers the bulk of the program but increases the logical complexity overall , so

practise 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 re-return it to calling module.


Code Example for Recursive Factorial Program

#include<stdio.h>
#include<conio.h>

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));
}

How It Works

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 in 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 1 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.

Comments

No comments yet.

    Sign in or sign up and post using a HubPages Network account.

    0 of 8192 characters used
    Post Comment

    No HTML is allowed in comments, but URLs will be hyperlinked. Comments are not for promoting your articles or other sites.


    Click to Rate This Article
    working