var fn = function even (n) {
if (n === 0) {
return true
}
else return !even(n - 1)
}
fn(5)//=> false
fn(2) //=> true
Почему эта функция работает так, как она есть? Когда я перехожу через него, когда аргумент равен 5, он, кажется, называет себя до тех пор, пока n не будет равен нулю, который вернет true, но возвращает false.Почему эта рекурсивная функция javascript возвращает то, что она делает?
Попробуйте записать его, что он делает шаг за шагом –
Это потому, что каждый рекурсивный вызов обращает значение булева, поэтому, если он кратен 2, он вернет true. Любая другая ваза будет ложной – Matriac
При каждом рекурсивном вызове возвращаемое значение будет сбрасываться. Тогда '!!!!! false' является' true'. Короче говоря: ** Результат отрицается, когда '!' Применяется нечетные времена ** – Tushar