Рекурсия окончательно имеет преимущества при задачах с рекурсивной природой. Другие плакаты назвали некоторые из них.
Использование возможности C для рекурсии определенно имеет преимущества в управлении памятью. Когда вы пытаетесь избежать рекурсии, большую часть времени для решения проблемы используется собственный стек или другой динамический тип данных. Это включает в себя динамическое управление памятью в C / C ++. Динамическое управление памятью является дорогостоящим и подвержено ошибкам!
Вы не можете разбить стек
С другой стороны, когда вы просто используете стек и используете рекурсию с локальными переменными - управление памятью просто, а стек в большинстве случаев более экономичен, чем все управление памятью, которое вы можете сделать самостоятельно. или с простым C / C ++ управлением памятью. Причина в том, что системный стек представляет собой такую простую и удобную структуру данных с низкими издержками, и он реализован с использованием специальных операций процессора, оптимизированных для этой работы. Поверьте, вы не можете победить это, так как компиляторы, операционные системы и процессоры оптимизированы для манипуляций со стеком в течение десятилетий!
PS: также стек не фрагментируется, как это делает кучи памяти. Таким образом, можно также сэкономить память, используя стек / рекурсию.