В классическом тексте Абельсона / Суссмана Структура и интерпретация компьютерных программ , в Разделе 1.2.2 о рекурсии дерева и последовательности Фибоначчи, они показывают это изображение:
дерево-рекурсивный процесс, сгенерированный в вычислениях для 5-го числа Фибоначчи
Затем они пишут: «Обратите внимание, что все вычисления (fib 3)
- почти половина работы - дублируются. На самом деле нетрудно показать, что число раз, которое процедура будет вычислять (fib 1)
или (fib 0)
(количество листьев в приведенном выше дереве в целом), точно равно Fib (n + 1) . "
Я понимаю, что они делают вывод о рекурсии дерева и о том, как этот классический случай рекурсии дерева Фибоначчи неэффективен, потому что рекурсивная функция вызывает себя дважды:
Древовидно-рекурсивная функция для вычисления числа Фибоначчи
Мой вопрос заключается в том, почему очевидно (то есть «не трудно показать»), что число листьев равно следующему числу Фибоначчи в последовательности? Я вижу визуально, что это так, но я не вижу связи с тем, почему число листьев (уменьшенные вычисления fib 1
и fib 0
) должно быть индикатором для следующего числа Фибоначчи (в этомслучай 8, который представляет собой Fib 6, то есть 6-е число Фибоначчи, т.е. Fib n + 1 , где n равно 5).
Очевидно, как последовательность Фибоначчивычисляется - сумма двух предыдущих чисел в последовательности дает текущее число, но почему число листьев точно равно следующему числу в последовательности? Какая здесь связь (кроме очевидного, что если посмотреть на нее и сложить листы 1 и 0, то в этом случае, на самом деле, получается общее число 8, то есть следующее (6-е) число Фибоначчи, и такна)