2017-02-15 87 views
0

我的假設是if語句的第一部分中的返回將打破該函數並返回n,但它會一直給出undefined。如果我console.log n它給了我正確的事情。我錯過了什麼?從函數中返回if語句給出undefined

謝謝大家

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'語句中返回一些東西! '返回digital_root(東西);'會做! –

+0

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

回答

0

您不要在遞歸返回,這樣意味着它會返回undefined。

return digital_root(thing) 
+0

...當然,OP也需要從最裏面的函數調用返回'n'(而不是'true')。 –

+0

太棒了!非常感謝。我仍然試圖掌握Javascript遞歸... –