Write a program for calculating value of an integer, C/C++ Programming

Write a Program for Calculating Value of an Integer?

For a clear understanding of recursive function we shall see an illustration for calculating value of an integer.
main()
{
int a,factorial;
printf("\n enter any number");
scanf("%d",&a);.
factorial =fact(a);
printf ("factorial value =%fctorial);
}

fact (int x)
{
int f =1,i;
for(i=x;i>=;i++ )
f=f*i;
return f;
}

And at this point is the output

Enter any number (3 is given as input)
Factorial value =6

at the present we will see the program using recursion

main()
{
int a,fact;
printf(enter any number");
scanf("%d",&a);
fact =fact_rec(a);
printf("\nfactorial value =%d",fact);
}

fact_rec(int x)
{
int f,i;
if (x==1)
return 1;
else
f=x*fact_rec(x-1);
return (f);
}

When the recursive program is executed the recursive function calls aren't executed immediately. Relatively, they are placed on a stack until the condition that terminates the recursion is encountered and the function calls are then executed in reverse order, as they are "popped" off the stack. Therefore, when evaluating a factorial recursively, the function calls will proceed in the following order.

n! = n! * (n-1)!
(n-1)! = (n-1)*(n-2)!
(n-2)! = (n-2)*(n-3)!
............................
2! = 2*1!
1! =1
The actual values will afterward be returned in the following reverse order

1! = 1
2! = 2*1! = 2*1 = 2
3! = 3*2! = 3*2 = 6
.........................
.........................
n! = n * (n-1)!

This reversal in the order of execution is a characteristic of all the functions that are executed recursively.

The recursive function fact_rec() is evaluate as illustrated in the following table.
Function call Value returned
fact_rec(1) 1
fact_rec(2) 2*fact_rec(1) or 2*1
fact_rec(3) 2*fact_rec(2) or 3*2* 1
fact_rec(4) 2*fact_rec(3) or 4*3*2*1


In the first run when the value of x = 1 it verify the if condition if (x=1) is satisfied and is returned through return statement f =x*fact_rec(x-l). Thus this becomes f =2*fact_rec(1). We know that fact_rec( 1) is 1, therefore the expression reduces to (2 * 1) or 2.

Recursive functions can be resourcefully used to solve problems where the solution is expressed in terms of successively applying the same solution to subsets of the problem when we use recursive functions, we must have an if statement, somewhere to force the function to return without recursive call being executed. Otherwise, the function will never return.

Posted Date: 6/11/2013 6:17:31 AM | Location : United States







Related Discussions:- Write a program for calculating value of an integer, Assignment Help, Ask Question on Write a program for calculating value of an integer, Get Answer, Expert's Help, Write a program for calculating value of an integer Discussions

Write discussion on Write a program for calculating value of an integer
Your posts are moderated
Related Questions
Problem Statement: You have to write a C program to develop a Car Parking Management System for a busy commercial area. The system will record the car plate number, date and time w

First line starts with T, number of test cases. Each test case T contains a necklace (N).

Operation on list - c++ program: Write a program in c to Insert value on list and list iteration. typedef struct item *node_ptr; struct item {                   int e

Op e r a t o r O v e r l o a d i n g : W h e n   a n   o p e r a t o r   i s   u s e d   f o r   d i ff e r e n t   op e r a

PROCEDUAL PROGRAMMING INTRODUCTION

Define Enumeration in Computer Programming? Enumerated types enclose a list of constants that are able to be addressed in integer values. We can declare variables and types


Program is to search for a given character in a string: Program is to search for a given character in a string and print point of match char *stsearch(char *string, char sea

Using a Friend Using a friend function is quite easy. The following example explains a friend function to access members of two classes. class Bclass;

Program to calculate tax: float tax (float) ; int main() {                 float purchase, tax_amt, total;                 cout                 cin >> purchase