recursive factorial

Nov 18, 2009 at 2:42am
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>

int factorial(int);

void main(void) {
	int number;
	
	cout << "Please enter a positive integer: ";
	cin >> number;
	if (number < 0)
		cout << "That is not a positive integer.\n";
	else
		cout << number << " factorial is: " << factorial(number) << endl;
}

int factorial(int number) {
	int temp;

	if(number <= 1) return 1;

	temp = number * factorial(number - 1);
	return temp;
}


Could somebody tell me step by step how this work? I have been spending a lot of hours figuring out. Somebody has told me how it works but it seems to be against the rule of programming. Really need this to proceed to the next chapter.
Nov 18, 2009 at 2:46am
the rule of programming
Which is...?
Nov 18, 2009 at 3:18am
NO not really the rule but is something confusing instead. So really hope you could help with this.
Nov 18, 2009 at 4:03am
I'm guessing that you mean that you thought it was on the list of things not to do, such as using goto statements.

Basically what is happening is that the function continually calls itself and decreases the number to factorial. When the number is less than or equal to 1, it stops calling itself and allows the chain of function calls to be completed. If we use factorial ( 5 );, we could look at operations that the program does like so:

- Call Factorial with 5
- Set variable to factorial of 5-1

- Call Factorial with 4
- Set variable to factorial of 4-1

- Call Factorial with 3
- Set variable to factorial of 3-1

- Call Factorial with 2
- Set variable to factorial of 2-1

- Call Factorial with 1
- The number for factorial is equal to 1, return 1

- Return 2*1
- Return 3*2
- Return 4*6
- Return 5*24
Last edited on Nov 18, 2009 at 4:03am
Nov 18, 2009 at 3:14pm
I really need a step by step guide to show me how this works because it is so confusing. Forget about the rule of programming in my earlier post, and really wanna get down to the core of it. I really appreciate it if you guys would.
Nov 18, 2009 at 4:11pm
hi
i can tell you about your question
but i am sorry my English is so bad

I can tell you only in Arabic language

my best regards
Nov 18, 2009 at 4:42pm
If you have a debugger, you could step through the code and see what it is doing. Just make sure to step into the factorial function.
Nov 18, 2009 at 5:07pm
It would be great if some of you are willing to tell me as I don't have anything home except I could do this in school. But computers are not always available.
Topic archived. No new replies allowed.