Я написал следующий метод (работает отлично), который берет список и возвращает список списков, содержащих элементы, так что первый список содержит половину элементов списка, следующий содержит половину оставшихся элементов, и скоро. Например,
repHalve(List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15))
Возвращение:
List(List(1, 2, 3, 4, 5, 6, 7, 8), List(9, 10, 11, 12), List(13, 14), List(15))
Вопрос в том, что я новичок в Scala и хотел преобразовать этот метод в рекурсивный подход. Пожалуйста, дайте мне знать, как мне это преобразовать. Я знаю, что базовый случай может быть таким же, как условие внутри, пока l oop, но все еще не в состоянии понять это. Любая помощь будет высоко ценится. Спасибо
def repHalve(list:List[Any]){
var local_list:List[Any] = list
var list_of_lists:List[Any] = List.empty
while(local_list.length>1){
val sub = local_list.slice(0, (local_list.length/2)+1)
list_of_lists ++= List(sub)
local_list = local_list.slice(local_list.length/2+1, local_list.length)
}
list_of_lists ++= List(List(list.last))
println(list_of_lists)
}