21 ? заранее спасибо
function getFibonachi(n)
{
if (n === 0){
return 0;
}
if (n === 1){
return 1;
}
else{
return getFibonachi(n - 1) + getFibonachi(n - 2);
}
}
var result = getFibonachi(8);
потому что фибоначи от 8 равно 21 в функции происходит рекурсивное вычисление что именно не понятно ?
dude just use debugger
а могли бы вы объяснить как школьнику?
функция работает правильно, только задом-наперед: фибоначи(8) = фибоначи(7) + фибоначи(6) фибоначи(7) = фибоначи(6) + фибоначи(5) фибоначи(6) = фибоначи(5) + фибоначи(4) ... фибоначи(1) = 1 фибоначи(0) = 0
к сожалению, я все равно не понял. на 1ой итерации вернется 13, на 2ой по идее 10 что я упускаю?
на первой итерации будет не 13, а сложение результата фибоначи(7) плюс фибоначи(6) мы не знаем чему равно фибоначи(7), поэтому идем вычислять его из фибоначи(6)+фибоначи(5), которые в свою очередь тоже не знаем и идем вычислять и так далее единственное что знаем это фибоначи(0) = он равен нулю и фибоначи(1) = он равен единицы на них то рекурсия и завершается
так понятнее, но тем не менее, как мы получаем 21?
складываем все полученные числа почитайте сам алгоритм https://ru.wikipedia.org/wiki/Числа_Фибоначчи
Обсуждают сегодня