а зачем нужна рекурсия, если всегда можно обойтись без неё?
Некоторые алгоритмы очень хорошо выглядят, если реализуются через рекурсию (но не всегда эффективно).
Те же алгоритмы, которые строятся на стратегии "разделяй и властвуй", когда у тебя есть большой набор данных, и ты можешь его разделить на наборы по меньше, которые обрабатывать независимо.
Например вот псевдокод для конвертации json-DOM в объекты:
fun ConvertJsonElementToObject(element: JsonElement): Object {
return match(element.type) {
Number(num) -> num as Object,
String(str) -> str as Object,
Array(elements) -> elements.map(ConvertJsonElementToObject) as Object,
Object(dict) -> dict.mapValues(ConvertJsonElementToObject) as Object,
Null -> null as Object
}
}