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
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.
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.
int fact(int n);
printf("/nEnter an integer:");
printf("/nThe factorial of % is = %d",n,fact(n));
int fact(int n)
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.
No responses found. Be the first to comment...