До сих пор каждая функция делала один рекурсивный вызов, и вызовы выстраивались в прямую цепочку. Когда функция вызывает себя два раза или больше, вызовы ветвятся, как дерево. Это одно изменение позволяет несколькими строками решать задачи, которые циклу даются трудно.
Два вызова: дерево Фибоначчи
Числа Фибоначчи начинаются с 0, 1, а каждое следующее — сумма двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13… В виде функции это два вызова:
Пройдите по шагам fib(4) и следите, как стек спускается по одной ветке,
возвращается и спускается по следующей: