diff --git a/homework/fibonacci/fibonacci.hpp b/homework/fibonacci/fibonacci.hpp index 3faab622..335d1d3e 100644 --- a/homework/fibonacci/fibonacci.hpp +++ b/homework/fibonacci/fibonacci.hpp @@ -2,10 +2,25 @@ int fibonacci_iterative(int sequence) { // TODO: Your implementation goes here - return 0; + if (sequence == 0 or sequence == 1) + return sequence; + if (sequence < 0) + return -1; + + int curr{0}, prev_prev{0}, prev{1}; + for (int i = 2; i <= sequence; i++) { + curr = prev_prev + prev; + prev_prev = prev; + prev = curr; + } + return curr; } int fibonacci_recursive(int sequence) { // TODO: Your implementation goes here - return 0; + if (sequence == 0 or sequence == 1) + return sequence; + int prev = fibonacci_recursive(sequence - 1); + int prev_prev = fibonacci_recursive(sequence - 2); + return prev + prev_prev; }