зацикливание можно починить идеей типа gas
каждый проход цикла или вызов рекурсии уменьшать заданную заранее переменную gas, и не давать ее увеличивать из цикла или рекурсии
если исполнение распределенное, то каждая ветвь рекурсии в случае удвоения рекурсии получает 1\2 от gas родителя, чтобы не было нужды синхронизировать потоки
как рекурсия ломает типы?