Можете помочь с понимаем кода?
На каждом шаге rest принимает значение list из предыдущего. То есть плодится вложенностьКартинка
Ставьте брейкпоинт на скрипте в консоли браузера и смотрите результаты выполнения каждой итерации, также читайте гуглите о рекурсии.