0
数値を受け取る関数を作成したいのですが、その結果がちょうど1桁の長さになるまで数字はその桁の合計に減らされます(16が7に戻り - > 7を返します) (326は11に減らされ、2 - > 2に戻ります)。Javascriptの再帰関数は未定義を返します
次のように私は、再帰関数を作成していますが、私がquestions類似したいくつかを見てきましたが、彼らはコードだけではなく概念に対処長さ> 1.
function digital_root(n) {
var numStr = (typeof n == "string") ? n : n.toString(); // ensure we will use a string
//console.log("evaluating " + numStr + "its length is " + numStr.length);
//now evaluate my base case
if (numStr.length <= 1){
console.log("i will return" + numStr)//should return my 1 digit number
return n; //it doesn't
}
else{
var arr = numStr.split(""); //convert the string into an array
var reducedArr = arr.reduce(function(a,b){
return parseInt(a) + parseInt(b);//sum the elements of the array
});
digital_root(reducedArr);//send the reduced value back for evaluation
}
}
digital_root(16)//returns undefined
ある数字のためにundefinedを返します。私が再帰を学んだ方法は、あなたが評価したベースケースを持っていることです。それが本当であればリターン - これは再帰の終わりです - もしそうでなければ、進むデータを変換するコードを実行します評価のために再度送信されました。
どのように私は未定義の結果を避けることができ、私の再帰の概念は正確ですか?
'return digital_root(reducedArr)' – Phil