function func(n) {
return n <= 1 ? n : func(n - 1) + func(n - 2);
}
alert(func(10)); // 55
Почему функция вернула 55? формула func(n - 1) + func(n-2) явно не формула, ведь тогда получается func(9) + func(8), а это означает, что 9 - это 34, а 8 - это 21, что в итоге дает 55, поскольку числа Фибоначчи 1(1),1(2),2(3),3(4),5(5),8(6),13(7),21(8),34(9), хотя это вы прекрасно знаете. Но вопрос в другом. Почему интерпретатор посчитал 9 за 34, а 8 за 21? это вообще не понятно, даже если учитывать, что эти данные функция берет из стека вызовов, но каким образом они туда попадают - тайный уголок для меня. Просветите, буду крайне благодарен!