Комбинаторика через рекурсию: как быть функциональной - PullRequest
1 голос
/ 20 мая 2019

Я работаю над комбинаторной функцией. Я хочу ввести строку и вывести все возможные комбинации этой строки, используя каждый символ. Например, при этом будут напечатаны все комбинации ME = {MM, ME, EM, EE}.

function combo_recursive(a)

  arr_combo = split(a, "")
  arr_size = size(arr_combo)
  arr_max = arr_size[1]
  mutab!e = []

  function combo_recurse(b)
    if b ≤ 1
      for i in 1:arr_max
        append!(mutab!e,arr_combo[i])
        println(join(mutab!e))
        pop!(mutab!e)
      end
    else
      for j in 1:arr_max
        append!(mutab!e,arr_combo[j])
        combo_recurse(b-1)
        pop!(mutab!e)
      end
    end
  end

  combo_recurse(arr_max)

end

Работает нормально, но я реализовал изменяемые массивы для достижения желаемого результата. Любые рекомендации о том, как применить функциональный дух к этому ??

...