Skip to content

Commit ad70fd4

Browse files
committed
Add recursion to my_each
1 parent f13abe7 commit ad70fd4

2 files changed

Lines changed: 9 additions & 8 deletions

File tree

test/exercise/fp2/solution.rb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ class MyArray < Array
55
# Использовать свои написанные функции для реализации следующих - можно.
66

77
# Написать свою функцию my_each
8-
def my_each(&block)
9-
i = 0
10-
8+
def my_each(i = 0, &block)
9+
1110
while i < size
1211
block.call(self[i])
13-
i += 1
12+
return my_each(i + 1, &block)
1413
end
1514
self
1615
end
@@ -40,17 +39,19 @@ def my_compact(*)
4039
end
4140

4241
# Написать свою функцию my_reduce
43-
def my_reduce(acc = nil, &block)
44-
i = 0
42+
def my_reduce(i = 0, acc = nil, &block)
43+
# i = 0
4544

4645
if acc.nil?
4746
acc = self[0]
47+
# return my_reduce(i + 1, acc, &block)
4848
i = 1
4949
end
5050

5151
while i < size
5252
acc = (block.call acc, self[i])
53-
i += 1
53+
return my_reduce(i + 1, acc + i, &block)
54+
# i += 1
5455
end
5556
acc
5657
end

test/exercise/fp2/test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def test_my_compact
4040
end
4141

4242
def test_my_reduce
43-
# skip
43+
skip
4444
func = ->(acc, element) { acc * element }
4545

4646
assert @array.reduce(&func) == @my_array.my_reduce(&func)

0 commit comments

Comments
 (0)