From bcf0bfd0143b50b2f3da5fdd8f228ff4d6a07cbf Mon Sep 17 00:00:00 2001 From: laneia Date: Wed, 19 Jun 2019 15:20:19 -0700 Subject: [PATCH 1/2] one line solution with .inject --- lib/fibonacci.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/fibonacci.rb b/lib/fibonacci.rb index 606755b..b330c14 100644 --- a/lib/fibonacci.rb +++ b/lib/fibonacci.rb @@ -5,8 +5,9 @@ # .... # e.g. 6th fibonacci number is 8 -# Time complexity: ? -# Space complexity: ? +# Time complexity: O(n) because creating an array of n elements, constant array[0] look up time +# Space complexity: O(n) because creating an array of n elements + def fibonacci(n) - raise NotImplementedError + (0..n).inject([1, 0]) { |(a, b), _| [b, a + b] }[0] end From 98799e91ec0bf9636405dd6de9ec2ee8e39a7528 Mon Sep 17 00:00:00 2001 From: laneia Date: Wed, 19 Jun 2019 15:33:44 -0700 Subject: [PATCH 2/2] added in commented out recursive solution --- lib/fibonacci.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/fibonacci.rb b/lib/fibonacci.rb index b330c14..10f87ba 100644 --- a/lib/fibonacci.rb +++ b/lib/fibonacci.rb @@ -11,3 +11,10 @@ def fibonacci(n) (0..n).inject([1, 0]) { |(a, b), _| [b, a + b] }[0] end + +# With recursion +# def fibonacci(n) +# raise ArgumentError if !n || n < 0 +# return n if n < 2 +# return (fibonacci(n - 1) + fibonacci(n - 2)) +# end