Сложения вложенных массивов с одинаковым набором ключей

Есть произвольное количество массивов, каждый из которых имеет одинаковый набор ключей.

По ключу может храниться другой массив, но рано или поздно вложенность заканчивается числовым значением.

Необходимо написать функцию, которая будет возвращать массив той же структуры, в котором по каждому ключу хранится сумма соответствующих значений исходных массивов.

Точный набор ключей заранее не известен.

Пример:

input:
      arr1 = array("01" => array => ("tries" => 125, "successful" => 32), "cost" => 300);
      arr2 = array("01" => array => ("tries" => 325, "successful" => 92), "cost" => 700);

output:
      arr3 = array("01" => array => ("tries" => 450, "successful" => 124), "cost" =>1000);

Ответы (1 шт):

Автор решения: Maxim Timakov

Как уже сказали в комментариях, нужно использовать рекурсию

Запишу алгоритм в псевдокоде

функция рекурсивная_сумма(А, Б: словарь): словарь
    В := пустой словарь()
    
    цикл для каждого ключа К из А
        если А(К) является словарем то
            В(К) = рекурсивная_сумма(А(К), Б(К))
        иначе
            В(К) = сумма(А(К), Б(К))
        конец если
    конец цикла

    вернуть В
конец функции
→ Ссылка