Quote (KrzaQ2 @ Nov 28 2013 05:18pm)
The result of fib(300) is well outside of any modern architecture's normal built-in types (~2.2e62), and because he uses int, integer overflow is undefined behaviour - anything can happen. There's no point in checking that.
I 100% agree with you that getting the result of Fibonacci(300) is completely absurd... I wasn't necessarily saying that he should try to find the 300th number in the sequence, just that if he changed his loop to execute until it got to 300 you would quickly see a problem of the recursive approach to solving the Fibonacci sequence problems.
Now, if this assignment was to explore recursion, then what he did is perfectly correct, I was simply suggesting that it would be beneficial as a CS/programming guy to see when recursion is not always the best solution to a problem, regardless of whether it works.
For instance, recursively solving this problem for the first X numbers (until I got bored of waiting) generates the following (again, I'm concerned about runtime, not the right answer. A problem can behave just like this without overflowing data types):
Code
Fibonacci(0): 0 Elapsed Time: 6.9704E-5s
Fibonacci(1): 1 Elapsed Time: 1.4061E-5s
Fibonacci(2): 1 Elapsed Time: 1.3163E-5s
Fibonacci(3): 2 Elapsed Time: 1.436E-5s
Fibonacci(4): 3 Elapsed Time: 1.2564E-5s
Fibonacci(5): 5 Elapsed Time: 1.2864E-5s
Fibonacci(6): 8 Elapsed Time: 1.3762E-5s
Fibonacci(7): 13 Elapsed Time: 1.436E-5s
Fibonacci(8): 21 Elapsed Time: 1.4958E-5s
Fibonacci(9): 34 Elapsed Time: 1.6154E-5s
Fibonacci(10): 55 Elapsed Time: 1.9445E-5s
Fibonacci(11): 89 Elapsed Time: 2.3335E-5s
Fibonacci(12): 144 Elapsed Time: 2.8719E-5s
Fibonacci(13): 233 Elapsed Time: 3.8591E-5s
Fibonacci(14): 377 Elapsed Time: 5.3849E-5s
Fibonacci(15): 610 Elapsed Time: 8.3166E-5s
Fibonacci(16): 987 Elapsed Time: 1.29535E-4s
Fibonacci(17): 1597 Elapsed Time: 1.93555E-4s
Fibonacci(18): 2584 Elapsed Time: 6.5785E-4s
Fibonacci(19): 4181 Elapsed Time: 4.99296E-4s
Fibonacci(20): 6765 Elapsed Time: 5.8037E-5s
Fibonacci(21): 10946 Elapsed Time: 6.7909E-5s
Fibonacci(22): 17711 Elapsed Time: 1.01115E-4s
Fibonacci(23): 28657 Elapsed Time: 1.55562E-4s
Fibonacci(24): 46368 Elapsed Time: 2.49797E-4s
Fibonacci(25): 75025 Elapsed Time: 3.88906E-4s
Fibonacci(26): 121393 Elapsed Time: 7.03323E-4s
Fibonacci(27): 196418 Elapsed Time: 0.001015046s
Fibonacci(28): 317811 Elapsed Time: 0.001630715s
Fibonacci(29): 514229 Elapsed Time: 0.002712474s
Fibonacci(30): 832040 Elapsed Time: 0.004246561s
Fibonacci(31): 1346269 Elapsed Time: 0.007097844s
Fibonacci(32): 2178309 Elapsed Time: 0.011025801s
Fibonacci(33): 3524578 Elapsed Time: 0.017870257s
Fibonacci(34): 5702887 Elapsed Time: 0.029311889s
Fibonacci(35): 9227465 Elapsed Time: 0.047736488s
Fibonacci(36): 14930352 Elapsed Time: 0.075374286s
Fibonacci(37): 24157817 Elapsed Time: 0.122507071s
Fibonacci(38): 39088169 Elapsed Time: 0.196033153s
Fibonacci(39): 63245986 Elapsed Time: 0.320241242s
Fibonacci(40): 102334155 Elapsed Time: 0.517071952s
Fibonacci(41): 165580141 Elapsed Time: 0.834085868s
Fibonacci(42): 267914296 Elapsed Time: 1.34936526s
Fibonacci(43): 433494437 Elapsed Time: 2.174353405s
Fibonacci(44): 701408733 Elapsed Time: 3.516113447s
Fibonacci(45): 1134903170 Elapsed Time: 5.713881123s
Fibonacci(46): 1836311903 Elapsed Time: 9.214309669s
Fibonacci(47): -1323752223 Elapsed Time: 14.961783346s
Fibonacci(48): 512559680 Elapsed Time: 24.175110875s
Fibonacci(49): -811192543 Elapsed Time: 39.177715354s
Fibonacci(50): -298632863 Elapsed Time: 63.278198644s
Fibonacci(51): -1109825406 Elapsed Time: 102.410173498s
Fibonacci(52): -1408458269 Elapsed Time: 165.773999501s
However solving with a different approach yields this:
Code
Fibonacci2(0): 0 Elapsed Time: 8.7056E-5s
Fibonacci2(1): 1 Elapsed Time: 1.8547E-5s
Fibonacci2(2): 1 Elapsed Time: 1.5556E-5s
Fibonacci2(3): 2 Elapsed Time: 1.9445E-5s
Fibonacci2(4): 3 Elapsed Time: 1.8548E-5s
Fibonacci2(5): 5 Elapsed Time: 1.8548E-5s
Fibonacci2(6): 8 Elapsed Time: 1.8548E-5s
Fibonacci2(7): 13 Elapsed Time: 1.9745E-5s
Fibonacci2(8): 21 Elapsed Time: 2.0044E-5s
Fibonacci2(9): 34 Elapsed Time: 1.9445E-5s
Fibonacci2(10): 55 Elapsed Time: 1.9744E-5s
Fibonacci2(11): 89 Elapsed Time: 3.1112E-5s
Fibonacci2(12): 144 Elapsed Time: 2.3335E-5s
Fibonacci2(13): 233 Elapsed Time: 1.9745E-5s
Fibonacci2(14): 377 Elapsed Time: 2.0043E-5s
Fibonacci2(15): 610 Elapsed Time: 2.0343E-5s
Fibonacci2(16): 987 Elapsed Time: 2.5728E-5s
Fibonacci2(17): 1597 Elapsed Time: 2.0044E-5s
Fibonacci2(18): 2584 Elapsed Time: 2.0343E-5s
Fibonacci2(19): 4181 Elapsed Time: 2.0043E-5s
Fibonacci2(20): 6765 Elapsed Time: 2.0044E-5s
Fibonacci2(21): 10946 Elapsed Time: 2.0043E-5s
Fibonacci2(22): 17711 Elapsed Time: 2.0342E-5s
Fibonacci2(23): 28657 Elapsed Time: 2.1539E-5s
Fibonacci2(24): 46368 Elapsed Time: 2.0642E-5s
Fibonacci2(25): 75025 Elapsed Time: 3.7096E-5s
Fibonacci2(26): 121393 Elapsed Time: 2.0642E-5s
Fibonacci2(27): 196418 Elapsed Time: 2.154E-5s
.
.
.
Fibonacci2(296): 5921388823061015893 Elapsed Time: 2.2138E-5s
Fibonacci2(297): 1938697607916024098 Elapsed Time: 2.2138E-5s
Fibonacci2(298): 7860086430977039991 Elapsed Time: 2.154E-5s
Fibonacci2(299): -8647960034816487527 Elapsed Time: 2.2138E-5s
Fibonacci2(300): -787873603839447536 Elapsed Time: 2.1839E-5s
Just trying to help challenge/expand the OP's skills