I have written a program for factorial in recursive and i am not able get how the program work. The program is as follows Code: [COLOR=Green]#include<iostream.h> main() { int fact(int m); unsigned long int f; cout<<"enter the no. "<<endl; int n; cin>>n; f = fact(n); cout<<"factorial of the no. is "<<f<<endl; } int fact(int m) { unsigned long int f=1; if(m==0|m==1) return(m); else { cout<<"before m = "<<m<<endl; f=m*fact(m-1); cout<<"after m = "<<m<<endl<<"fact(m-1) = "<<fact(m-1)<<endl; cout<<"f = "<<f<<endl; return(f); } }[/COLOR] I am getting out put like this. Can any one explain me why i am getting like this enter the no. 3 before m = 3 before m = 2 after m = 2 fact(m-1) = 1 f = 2 before m = 2 after m = 2 fact(m-1) = 1 f = 2 after m = 3 fact(m-1) = 2 f = 6 factorial of the no. is 6