Click here to Skip to main content
15,920,603 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionSubclassWindow question Pin
Yak7717-Feb-06 19:04
Yak7717-Feb-06 19:04 
AnswerRe: SubclassWindow question Pin
Michael Dunn18-Feb-06 5:37
sitebuilderMichael Dunn18-Feb-06 5:37 
Questionembedding resource inside win32 dll Pin
act_x17-Feb-06 18:21
act_x17-Feb-06 18:21 
AnswerRe: embedding resource inside win32 dll Pin
Waldermort17-Feb-06 18:57
Waldermort17-Feb-06 18:57 
AnswerRe: embedding resource inside win32 dll Pin
Gavin Taylor19-Feb-06 2:41
professionalGavin Taylor19-Feb-06 2:41 
QuestionRandom move Pin
eivanlo17-Feb-06 16:41
eivanlo17-Feb-06 16:41 
AnswerRe: Random move Pin
_AnsHUMAN_ 17-Feb-06 17:22
_AnsHUMAN_ 17-Feb-06 17:22 
QuestionQuestion about recursion Pin
ericelysia17-Feb-06 15:35
ericelysia17-Feb-06 15:35 
Hello,

I am trying to understand recursion by using the following example.
   <br />
#include <iostream><br />
#include <iomanip><br />
<br />
using namespace std;<br />
<br />
unsigned long factorial( unsigned long ); // function prototype<br />
//-------------------------------------------------------------------------<br />
int main()<br />
{<br />
   // Loop 4 times. During each iteration, calculate factorial( i ) and display result.<br />
   for ( int i = 0; i <= 4; i++ )<br />
   {<br />
	  cout << "\n i = " << i << endl;<br />
	  cout << endl << setw( 2 ) << i << "! = " << factorial( i ) << endl;<br />
   }<br />
   return 0;  // indicates successful termination<br />
<br />
} // end main<br />
//-------------------------------------------------------------------------<br />
// recursive definition of function factorial<br />
unsigned long factorial( unsigned long number )<br />
{<br />
   // base case<br />
   if ( number <= 1 )  <br />
   {<br />
      return 1;<br />
   }<br />
   // recursive step<br />
   else  <br />
   {<br />
	  cout << endl << "number = " << number << "    factorial(number - 1) = " << factorial(number - 1) <br />
		   << "    number * factorial(number - 1) = " << number * factorial( number - 1 ) << endl;          <br />
      return number * factorial( number - 1 );<br />
   }<br />
} // end function factorial<br />
//-------------------------------------------------------------------------<br />
/*<br />
output:<br />
<br />
 i = 0<br />
<br />
 0! = 1<br />
<br />
 i = 1<br />
<br />
 1! = 1<br />
<br />
 i = 2<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
 2! = 2<br />
<br />
 i = 3<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 3    factorial(number - 1) = 2    number * factorial(number - 1) = 6<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
 3! = 6<br />
<br />
 i = 4<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 3    factorial(number - 1) = 2    number * factorial(number - 1) = 6<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 3    factorial(number - 1) = 2    number * factorial(number - 1) = 6<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 4    factorial(number - 1) = 6    number * factorial(number - 1) = 24<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
number = 3    factorial(number - 1) = 2    number * factorial(number - 1) = 6<br />
<br />
number = 2    factorial(number - 1) = 1    number * factorial(number - 1) = 2<br />
<br />
 4! = 24<br />
Press any key to continue<br />
*/<br />

I do understand that when i = 0, the base case is true, therefore 1 is returned. 0! = 1

When i = 1, the base case is true and 1 is returned. 1! = 1

When i = 2, the base case is not true, so number * factorial( number - 1 ) is returned, which is 2 * factorial( 1 ). 2 * 1 = 2. 2 is returned. 2! = 2

At this point, I have a question. The next line says i = 3. Then it says number = 2. How does number become 2 if i = 3?

Thanks,
Eric
AnswerRe: Question about recursion Pin
Michael Dunn17-Feb-06 16:22
sitebuilderMichael Dunn17-Feb-06 16:22 
GeneralRe: Question about recursion Pin
ericelysia17-Feb-06 16:36
ericelysia17-Feb-06 16:36 
GeneralRe: Question about recursion Pin
ericelysia17-Feb-06 18:54
ericelysia17-Feb-06 18:54 
AnswerRe: Question about recursion Pin
David Crow18-Feb-06 7:13
David Crow18-Feb-06 7:13 
AnswerRe: Question about recursion Pin
Jeremy Thornton18-Feb-06 9:10
Jeremy Thornton18-Feb-06 9:10 
AnswerRe: Question about recursion Pin
ericelysia20-Feb-06 3:37
ericelysia20-Feb-06 3:37 
QuestionWinInet FtpPutFile Pin
rbrad1234517-Feb-06 15:21
rbrad1234517-Feb-06 15:21 
AnswerRe: WinInet FtpPutFile Pin
Michael Dunn17-Feb-06 15:53
sitebuilderMichael Dunn17-Feb-06 15:53 
GeneralRe: WinInet FtpPutFile Pin
rbrad1234518-Feb-06 16:48
rbrad1234518-Feb-06 16:48 
QuestionMFC42UD.lib Pin
super17-Feb-06 13:56
professionalsuper17-Feb-06 13:56 
AnswerRe: MFC42UD.lib Pin
super17-Feb-06 14:04
professionalsuper17-Feb-06 14:04 
QuestionReading file with X/Y axes? Pin
Lord Kixdemp17-Feb-06 13:20
Lord Kixdemp17-Feb-06 13:20 
AnswerRe: Reading file with X/Y axes? Pin
Lord Kixdemp17-Feb-06 15:40
Lord Kixdemp17-Feb-06 15:40 
Question[registry] get all values in a key Pin
Sam 200617-Feb-06 12:42
Sam 200617-Feb-06 12:42 
AnswerRe: [registry] get all values in a key Pin
Michael Dunn17-Feb-06 15:54
sitebuilderMichael Dunn17-Feb-06 15:54 
GeneralRe: [registry] get all values in a key Pin
Sam 200618-Feb-06 4:55
Sam 200618-Feb-06 4:55 
AnswerRe: [registry] get all values in a key Pin
Ganesh_T18-Feb-06 1:40
Ganesh_T18-Feb-06 1:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.