Представляю вашему вниманию перевод статьи Beau Carnes [How Recursion Works — explained with flowcharts and a video][1].
![][2]
> «Для того чтобы понять рекурсию, надо сначала понять рекурсию»
Рекурсию порой сложно понять, особенно новичкам в программировании. Если говорить просто, то рекурсия – это функция, которая сама вызывает себя. Но давайте попробую объяснить на примере.
Представьте, что вы пытаетесь открыть дверь в спальню, а она закрыта. Ваш трехлетний сынок появляется из-за угла и говорит, что единственный ключ спрятан в коробке. Вы опаздываете на работу и Вам действительно нужно попасть в комнату и взять вашу рубашку.
Вы открываете коробку только чтобы найти… еще больше коробок. Коробки внутри коробок и вы не знаете, в какой из них Ваш ключ. Вам срочно нужна рубашка, так что вам надо придумать хороший алгоритм и найти ключ.
Есть два основных подхода в создании алгоритма для решения данной проблемы: итеративный и рекурсивный. Вот блок-схемы этих подходов:
![][3]
#### Какой подход для Вас проще?
[Читать дальше →][4]
[1]:
http://medium.freecodecamp.org/how-recursion-works-explained-with-flowcharts-and-a-video-de61f40cb7f9
[2]:
https://habrastorage.org/web/c13/9d8/988/c139d898804b4e8ebcabd7e539ccdbd4.png
[3]:
https://habrastorage.org/web/620/c52/954/620c5295459b4d83b0a94f2e20fe8ccc.png
[4]:
https://habrahabr.ru/post/337030/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut