林求解codewars問題和IM肯定我已經得到了它的工作:Javascript遞歸函數沒有返回值?
function digital_root(n) {
// ...
n = n.toString();
if (n.length === 1) {
return parseInt(n);
} else {
let count = 0;
for (let i = 0; i < n.length; i++) {
//console.log(parseInt(n[i]))
count += parseInt(n[i]);
}
//console.log(count);
digital_root(count);
}
}
console.log(digital_root(942));
從本質上講它應該找到一個「數字根」:
數字根的遞歸總和一個數字中的所有數字。 給定n,取n的位數之和。如果該值有兩個 數字,請繼續以這種方式減少,直到產生一個數字的數字爲 。這隻適用於自然數。
所以我其實得到的目的,而是在if
聲明無論什麼原因,正確答案(其中即時觀看調試運行,它輸入的語句,它會說的返回值是正確的值。
但隨後跳出if
聲明,並試圖從主digital_root
函數返回?
這是爲什麼呢?它不應該打出來的這個時候它擊中if
聲明?林困惑,爲什麼它試圖跳出if
狀態NT,然後嘗試從digital_root
返回任何內容,以便返回值最終未定義?
廢話,我不是超級習慣使用遞歸。我想......你能解釋我們爲什麼要回來嗎?是不是因爲你想把「未來」的價值迴歸到現在呢? – msmith1114
@ msmith1114查看解釋!我希望這是有用的。 –