diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..73f69e0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/.rakeTasks b/.idea/.rakeTasks
new file mode 100644
index 0000000..f88db1a
--- /dev/null
+++ b/.idea/.rakeTasks
@@ -0,0 +1,7 @@
+
+
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..b0db9b0
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..510e7fc
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..8457255
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/recursion-writing.iml b/.idea/recursion-writing.iml
new file mode 100644
index 0000000..a1a27da
--- /dev/null
+++ b/.idea/recursion-writing.iml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..630ea95
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,36 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ ansi (1.5.0)
+ builder (3.2.4)
+ coderay (1.1.3)
+ method_source (1.0.0)
+ minitest (5.14.2)
+ minitest-reporters (1.4.2)
+ ansi
+ builder
+ minitest (>= 5.0)
+ ruby-progressbar
+ minitest-skip (0.0.3)
+ minitest (~> 5.0)
+ minitest-spec (0.0.2.1)
+ minitest (>= 3.0)
+ pry (0.13.1)
+ coderay (~> 1.1)
+ method_source (~> 1.0)
+ rake (13.0.1)
+ ruby-progressbar (1.10.1)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ minitest
+ minitest-reporters
+ minitest-skip
+ minitest-spec
+ pry
+ rake
+
+BUNDLED WITH
+ 2.1.4
diff --git a/lib/recursive-methods.rb b/lib/recursive-methods.rb
index fbf6faa..ea87ebe 100644
--- a/lib/recursive-methods.rb
+++ b/lib/recursive-methods.rb
@@ -1,49 +1,88 @@
# Authoring recursive algorithms. Add comments including time and space complexity for each method.
-# Time complexity: ?
-# Space complexity: ?
+# Time complexity: O(n)
+# Space complexity: O(n)
def factorial(n)
- raise NotImplementedError, "Method not implemented"
+ if n == 0
+ return 1
+ elsif n < 0
+ raise ArgumentError
+ else
+ return n * factorial(n-1)
+ end
end
-# Time complexity: ?
-# Space complexity: ?
+# Time complexity: O(n)
+# Space complexity: O(n)
def reverse(s)
- raise NotImplementedError, "Method not implemented"
+ if s.length <= 1
+ return s
+ else
+ return reverse(s[1..-1]) + s[0]
+ end
end
-# Time complexity: ?
-# Space complexity: ?
+# # Time complexity: O(1)
+# # Space complexity: O(1)
def reverse_inplace(s)
- raise NotImplementedError, "Method not implemented"
+ if s.length <= 1
+ return s
+ else
+ return s.reverse!
+ end
end
-
-# Time complexity: ?
-# Space complexity: ?
+#
+# # Time complexity: O(n)
+# # Space complexity: O(n)
def bunny(n)
- raise NotImplementedError, "Method not implemented"
+ if n == 0
+ return 0
+ else
+ return 2 + bunny(n-1)
+ end
end
-
-# Time complexity: ?
-# Space complexity: ?
+#
+# # Time complexity: O(n^2) * not sure about this one
+# # Space complexity: O(n^2) * same here?
def nested(s)
- raise NotImplementedError, "Method not implemented"
+ if s == ""
+ return true
+ elsif
+ s[0] == "(" && s[-1] == ")"
+ return nested(s[1..-2])
+ else
+ return false
+ end
end
-
-# Time complexity: ?
-# Space complexity: ?
+#
+# # Time complexity: O(n)
+# # Space complexity: O(n^2)
def search(array, value)
- raise NotImplementedError, "Method not implemented"
+ if array.nil?
+ return false
+ elsif
+ array[0] == value
+ return true
+ else
+ return search(array[1..-1], value)
+ end
end
-
-# Time complexity: ?
-# Space complexity: ?
+#
+# # Time complexity: O(n)
+# # Space complexity: O(n)
def is_palindrome(s)
- raise NotImplementedError, "Method not implemented"
+ if s.length <= 1
+ return true
+ elsif s[0] != s[-1]
+ return false
+ else
+ return is_palindrome(s[1..-2])
+ end
end
-
-# Time complexity: ?
-# Space complexity: ?
+#
+# # Time complexity: ?
+# # Space complexity: ?
def digit_match(n, m)
- raise NotImplementedError, "Method not implemented"
-end
\ No newline at end of file
+ #Not sure how to get started on this one.
+end
+
diff --git a/test/recursion_writing_test.rb b/test/recursion_writing_test.rb
index 3b30725..94dc6cd 100644
--- a/test/recursion_writing_test.rb
+++ b/test/recursion_writing_test.rb
@@ -167,7 +167,7 @@
end
end
-xdescribe "nested" do
+describe "nested" do
it "will return true for empystring" do
# Arrange
string = ""
@@ -213,7 +213,7 @@
end
end
-xdescribe "search" do
+describe "search" do
it "will return false for empty array" do
# Arrange
item = "a"
@@ -263,7 +263,7 @@
end
end
-xdescribe "is_palindrome" do
+describe "is_palindrome" do
it "will return true for emptystring" do
# Arrange
string = ""