Рекурсия - это функциональное наследие, поэтому написание вашей программы в функциональном стиле даст наилучшие результаты.
Это значит избегать таких вещей, как
- императивные операторы стиля
for
, if
, switch
и т. Д., Которые не возвращают значение
- мутация или переменные переназначения, такие как
i = i + 1
const myFun = i =>
i === 0
? "arrived"
: myFun (i - 1)
console.log (myFun (10))
// "arrived"
Обратите внимание, что выражения, в отличие от операторов, оцениваются как значения. Мы внесли следующие изменения
function
оператор function myFun (i) { ... }
заменен на функцию выражение myFun (i) => ...
if
оператор заменен на троичный выражение , например condition ? ifTrue : ifFalse
- оператор присваивания переменной
i = i - 1; myFun(i)
заменен на выражение myFun(i - 1)
Обратите внимание, что оператор return
сам по себе является побочным эффектом и мало используется в функциональной программе JavaScript.
Как и в случае с другим ответом, все пути кода должны возвращать значение ! Преимущество написания вашей программы в функциональном стиле означает, что вы не можете написать функцию, которая не возвращает значение, и вы не можете написать условие только с одной ветвью.
TL; DR: используйте функциональный стиль, и ваша проблема автоматически исчезает