Каждый раз, когда понимание оценивает fib(n)
, оно сохраняет этот результат в кэш.К тому времени, когда он достигает fib(500)
, fib(499)
и fib(498)
уже кешируются, они больше не запускаются.Стек отправляет 1 вызов глубиной fib
.
Когда вы сразу запускаете fib(500)
, первое, что он оценивает, это fib(499)
, который не кэшируется и оценивает fib(498)
, который некэшируется и оценивает fib(497)
… вплоть до fib(1)
.В стек поступает 499 вызовов глубиной fib
.
Вы можете увидеть то же самое, запустив:
print(fib(250))
print(fib(500))