Я начинающий программист из Python / Java, который пытается разобраться с функциональным программированием в Scala.
Я пытаюсь написать функцию, которая будет принимать список символов и возвращать список их частот. Например, List ('a', 'b', 'a') должен возвращать List (('a', 2), ('b', 1)).
Я новичок в рекурсии скалы и хвоста, поэтому, пожалуйста, не предполагайте много предварительных знаний :) Вот что у меня есть:
def times(chars: List[Char]): List[(Char, Int)] = {
def loop(chars: List[Char], list: List[(Char, Int)]): List[(Char, Int)] =
{
if (chars.isEmpty) list
else
{
val head = chars.head
val freq = chars.count(x=> x == head)
(head,freq) :: list
loop(chars.tail.filterNot(x=> x == head),list)
}
}
loop(chars,List())
}
Если я запускаю время (List ('a', 'b', 'a')), я просто получаю пустой список. Любая помощь будет принята с благодарностью!