Итак, я хочу создать рекурсивную функцию, которая при получении массива будет возвращать массив элементов, соответствующих условию, переданному в функцию. Я попытался использовать лямбда-выражения, блоки и процедуры, и каждый раз, когда они выходят из функции, как только это условие оценивается как истинное, а не при соблюдении базового варианта. Я хочу знать, почему это так и как я могу это преодолеть.
def find_by_condition_recur(arr, count, acc, &block)
return acc if count == arr.count - 1
puts count
puts arr.count
if block.call(arr[count])
acc << arr[count]
else
find_by_condition_recur(arr, count += 1, acc, &block)
end
end
РЕДАКТИРОВАТЬ:
def find_by_condition_recur(arr, findBy, count, acc)
return acc if count == arr.count - 1
puts count
puts arr.count
if findBy.call(arr[count])
acc << arr[count]
find_by_condition_recur(arr, findBy, count += 1, acc)
end
end
search_condition = Proc.new { |x| x % 3 == 0 }