def fib(n, *args)
      if args && args.include?(:iterative)
        iterative_fib(n)
      elsif args && args.include?(:matrix)
        matrix_fib(n)
      else
        ## TODO: make this efficient
        return Array.new(n) {|i| recursive_fib(i + 1) }

      end

    end
def fib(n, *args)
      if args && args.include?(:iterative)
        iterative_fib(n)
      elsif args && args.include?(:matrix)
        matrix_fib(n)
      else
        ## TODO: make this efficient
        return Array.new(n) {|i| recursive_fib(i + 1) }

      end

    end
args should be the strategy to be used (one of :iterative, :recursive)
 Defaults to recursive