Вычисление функции F можно представить как цепочку вызовов новых копий этой функции c передачей новых значений аргумента и возвратов значений функции в предыдущую копию.
n-1 n-2 n-3 0
n!
F(n) F(n-1) F(n-2) F(1)
Цепочка вызовов обрывается при передаче нуля в новую копию функции. Движение в прямом направлении (разворачивание рекурсии) сопровождается только вычислением условия и вызовом.
Значение функции вычисляется при сворачивании цепочки вызовов.
Рекурсивное обращение к процедуре (рекурсивный вызов функции) можно представить как
· Построение в памяти компьютера новой копии этой процедуры;
· Передачу управления в эту новую копию (с новыми значениями параметров);
· Обработку (возможно – рекурсивную) данных в этой копии;
· Возврат в предыдущую копию (с прежними значениями параметров)