@eldar_web

Как провести рекурсию?

Допустим, есть категории и вложенные подкатегории.
Вот мой код рекурсии (Ruby):
def recurs(category_id)
    @list << category_id
    Category.where(parent_id: category_id).each do |category|
      recurs(category.id)
    end
  end

А вот так вызываю:
@list = []
recurs(7)

В итоге в @list то, что мне нужно.
Но вызов выглядит не нормальным.
Как провести рекурсию, чтобы хотя бы можно было так перебрать id-шники:
@list = recurs(7)
???
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
@nahmet
Поздно, но...
def recurs(category_id, list=[])
  list << category_id
  Category.where(parent_id: category_id).each do |category|
    recurs(category.id, list)
  end
  list
end
recurs 7
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
inf
@inf
DevOps Engineer
Гуманнее так
def recurs(category_id)
    list << category_id
    Category.where(parent_id: category_id).each do |category|
      recurs(category.id)
    end
    list
  end


@list = recurs(7)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы