diff --git a/lib/fibonacci.rb b/lib/fibonacci.rb index 7465c25..fbd3b01 100644 --- a/lib/fibonacci.rb +++ b/lib/fibonacci.rb @@ -1,8 +1,17 @@ + # Improved Fibonacci -# Time Complexity - ? -# Space Complexity - ? (should be O(n)) +# Time Complexity - O(n) +# Space Complexity - O(n) + # Hint, you may want a recursive helper method def fibonacci(n) - + + return 1 if n == 1 || n == 2 + return 0 if n == 0 + raise ArgumentError if n < 0 + + fibonacci(n - 1) + fibonacci(n - 2) + end + diff --git a/lib/super_digit.rb b/lib/super_digit.rb index 33e367f..64e8c71 100644 --- a/lib/super_digit.rb +++ b/lib/super_digit.rb @@ -1,15 +1,23 @@ # Superdigit -# Time Complexity - ? -# Space Complexity - ? +# Time Complexity - O(n) +# Space Complexity - O(n) + def super_digit(n) - + + return n if n < 10 + super_digit(n.digits.sum) + end - # Time Complexity - ? # Space Complexity - ? def refined_super_digit(n, k) - + + n = n.digits.sum * k + super_digit(n) + end - \ No newline at end of file + + +p refined_super_digit(3212, 4) diff --git a/test/fibonacci_test.rb b/test/fibonacci_test.rb index 639f3b1..e6c2a7b 100644 --- a/test/fibonacci_test.rb +++ b/test/fibonacci_test.rb @@ -1,6 +1,6 @@ require_relative "test_helper" -describe "Fibonacci" do +xdescribe "Fibonacci" do it "will raise an error for n < 0" do expect { # Act diff --git a/test/super_digit_test.rb b/test/super_digit_test.rb index 60da3a1..20973f1 100644 --- a/test/super_digit_test.rb +++ b/test/super_digit_test.rb @@ -1,6 +1,6 @@ require_relative "test_helper" -xdescribe "super_digit" do +describe "super_digit" do it "will return 2 for super_digit(9875)" do # Act answer = super_digit(9875) @@ -33,7 +33,7 @@ expect(answer).must_equal 6 end - describe "refined superdigit" do + xdescribe "refined superdigit" do it "will return 1 for n = 1 and k = 1" do # Act answer = refined_super_digit(1, 1)