Да, избегать рекурсии хорошо на всех встроенных платформах.
Он не только снижает или даже устраняет вероятность переполнения стека, но также часто дает более быстрый код.
Вы всегда можете переписать рекурсивный алгоритм для повторения. Это не всегда практично (подумайте о быстрой сортировке). Один из способов обойти это - переписать алгоритмы так, чтобы глубина рекурсии была ограничена.
Интросорт - прекрасный пример того, как это делается на практике. Он ограничивает глубину рекурсии быстрой сортировки до log2 (количество элементов). Так что на 32-битной машине вы никогда не вернетесь глубже, чем 32.
http://en.wikipedia.org/wiki/Introsort
В прошлом я написал немало программного обеспечения для встраиваемых платформ (автомобильные развлекательные системы, телефоны, игровые приставки и т. П.), И я всегда следил за тем, чтобы установить верхний предел глубины рекурсии или избежать рекурсии в первую очередь.
В результате ни одна из моих программ никогда не умерла с переполнением стека, и большинство программ довольны размером стека 32 КБ. Это окупается, когда вам нужно несколько потоков, поскольку каждый поток получает свой собственный стек. Таким образом, вы можете сэкономить мегабайты памяти.