Как?! Вы не читали Пикассо?..
Сегодня - сразу две цитаты. 
И они, на самом деле, вовсе даже не о программировании.
"Одно из главных отличий программ которые вы разрабатывали в институте, от программ, которые вы разрабатываете теперь, став профессиональным программистом, в том, что проблемы проектирования, решаемые институтскими программами, редко бывают грязными, если вообще бывают таковыми. В институте задания по программированию составлены так, чтобы вы по кратчайшему пути двигались от начала решения к его результату. Преподавателя, который даёт студентам задания и свободно изменяет их по завершении проектирования и даже перед сдачей готовых программ, вероятно, облили бы дёгтем и вываляли в перьях. Однако в мире профессионального программирования такие изменения происходят ежедневно."
"Одна из проблем с учебниками по вычислительной технике в том, что они предлагают глупые примеры рекурсии. Типичными примерами являются вычисление факториала или последовательности Фибоначчи. Рекурсия - мощный инструмент, и очень глупо использовать её в этих двух случаях. Если бы программист, работающий у меня, применял рекурсию для вычисления факториала, я бы нанял кого-то другого."
Стив МакКоннелл, "Совершенный код"
Я осилил уже половину этого кирпича, и цитат у меня гораздо больше.
Просто не хочется превращаться в манифест идеального программирования.
Тем более, что идеал недостижим.)))

И они, на самом деле, вовсе даже не о программировании.
"Одно из главных отличий программ которые вы разрабатывали в институте, от программ, которые вы разрабатываете теперь, став профессиональным программистом, в том, что проблемы проектирования, решаемые институтскими программами, редко бывают грязными, если вообще бывают таковыми. В институте задания по программированию составлены так, чтобы вы по кратчайшему пути двигались от начала решения к его результату. Преподавателя, который даёт студентам задания и свободно изменяет их по завершении проектирования и даже перед сдачей готовых программ, вероятно, облили бы дёгтем и вываляли в перьях. Однако в мире профессионального программирования такие изменения происходят ежедневно."
"Одна из проблем с учебниками по вычислительной технике в том, что они предлагают глупые примеры рекурсии. Типичными примерами являются вычисление факториала или последовательности Фибоначчи. Рекурсия - мощный инструмент, и очень глупо использовать её в этих двух случаях. Если бы программист, работающий у меня, применял рекурсию для вычисления факториала, я бы нанял кого-то другого."
Стив МакКоннелл, "Совершенный код"



Рекурсия очень мощная штука в математике, но при огромном количестве шагов забивает стэк в программировании. Хотя рекурсивный код изящнее, и понятнее чем не рекурсивный.
Георгий
PS не буду я заводить журнал здесь. :-Р
Чтобы стэк не забивался, нужно рекурсивные функции правильно писать.
Тем более, что идеал недостижим если бы он был достижим жизнь не имела бы смысла.
кстати, никогда не замечал, что история человечества, если верить библии, началась с (по)грешности ; )