2017-02-15 2 views
0

Мое предположение заключается в том, что возврат в первой части оператора if приведет к поломке функции и возврату n, однако она продолжает давать неопределенные значения. Если я console.log n, это дает мне правильную вещь. Я что-то упускаю??Возврат из инструкции if в функции, задающей неопределенные

Спасибо всем

function digital_root(n) { 
    if(n.toString().length === 1){ 
    console.log(n) 
    return true; 
    }else{ 
    var digits = (""+n).split(""); 
    thing = digits.reduce((a, b) => Number(a) + Number(b), 0); 
    digital_root(thing) 
    } 
} 

digital_root(942) 
+0

потому что ваша рекурсия не возвращается – epascarello

+0

Вам нужно вернуть что-то в статусе 'else'! 'return digital_root (вещь);' будет делать! –

+0

http://stackoverflow.com/q/39321807/5647260 – Li357

ответ

0

Вы не возвращаются в рекурсии так, что означает, что он будет возвращать неопределенным.

return digital_root(thing) 
+0

... и, конечно, OP также необходимо вернуть 'n' (вместо' true') из самого внутреннего вызова функции. –

+0

Удивительный! Огромное спасибо. Я все еще пытаюсь понять рекурсию Javascript ... –

Смежные вопросы