I found a interesting interview questions that is most likely a bit over done, but I still like it, it reminds me of my intro to programming classes from back in the day, which for me was only about 5 years ago. This one concerns the Fibonacci Numbers. The problem is write the Fibonacci Sequence without Recursion. With Recursion the fib sequence is relatively easy:
public static int GetFibValueRecursive(int place) { if (place <= 0) return 0; if (place == 1) return 1; return GetFibValueRecursive(place - 1) + GetFibValueRecursive(place - 2); }
First step to this problem I would write a test to make sure my code is correctly solving the problem.
[Test] public void GetFibValue_GivenPlace_ReturnCorrectValue() { Assert.AreEqual(0, Fibonacci.GetFibValue(-1)); Assert.AreEqual(0, Fibonacci.GetFibValue(0)); Assert.AreEqual(1, Fibonacci.GetFibValue(1)); Assert.AreEqual(1, Fibonacci.GetFibValue(2)); Assert.AreEqual(34, Fibonacci.GetFibValue(9)); Assert.AreEqual(144, Fibonacci.GetFibValue(12)); }
Then I would write the code.
public static int GetFibValue(int place) { if (place <= 0) return 0; int previous = -1; int result = 1; for (int i = 0; i <= place; ++i) { int sum = result + previous; previous = result; result = sum; } return result; }
Bam! The Fibonacci Sequence without recursion of course if you wanted more than just a value for given place I would write it a little different perhaps return a list of values instead of a single value.
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.