Think of recursive functions as boxes within boxes. Your function was as follows:
Code:
int Fibonacci(int N)
{
if ((N == 1) || (N == 2)) // base cases
return 1;
else
return(Fibonacci(N - 1) + Fibonacci(N - 2));
}
Now, let's say we do the following: "int x = Fibonacci(5);"
What does x equal now?
The best way to diagram program flow of a recursive function, I find, if as a tree:
Code:
Fibonacci(5)
/ \
/ \
/ \
Fibonacci(4) Fibonacci(3)
/ \ / \
/ \ / \
Fibonacci(3) Fibonacci(2) Fibonacci(2) Fibonacci(1)
/ \ | | |
Fibonacci(2) Fibonacci(1) 1 1 1
| |
1 1
In an outline form, that would be this:
Code:
Fibonacci(5) = Fibonacci(4) + Fibonacci(3)
Fibonacci(4) = Fibonacci(3) + Fibonacci(2)
Fibonacci(3) = Fibonacci(2) + Fibonacci(1)
Fibonacci(2) = 1
Fibonacci(1) = 1
Fibonacci(2) = 1
Fibonacci(3) = Fibonacci(2) + Fibonacci(1)
Fibonacci(2) = 1
Fibonacci(1) = 1
Hopefully, this helps.