2017-06-05 14 views
0

小さなコードで小さなヘルプが必要です。この関数は未定義に戻り、合計のconsole.logを返したいと思います。コードはhttp://jsbin.com/jedigigigo/edit?js,console関数が返されます。未定義

var addDigits = function a(num) { 
 
    var length = num.toString().length; 
 
    var value = num.toString(); 
 
    var sum = 0; 
 
    for (var i = 0; i < value.length; i++) { 
 
    sum += Number(value[i]); 
 
    } 
 
    if (sum > 9) { 
 
    a(sum); 
 
    } else { 
 
    console.log(sum); 
 
    return sum; 
 
    } 
 
}; 
 

 

 
console.log(addDigits(38));

答えて

5

は、if文でリターンを追加します。ここにある: -

/** 
* @param {number} num 
* @return {number} 
*/ 

var addDigits = function a(num) { 
 
    var length = num.toString().length; 
 
    var value = num.toString(); 
 
    var sum = 0; 
 
    for (var i = 0; i < value.length; i++) { 
 
    sum += Number(value[i]); 
 
    } 
 
    if (sum > 9) { 
 
    return a(sum); 
 
    } else { 
 
    console.log(sum); 
 
    return sum; 
 
    } 
 
}; 
 

 

 
console.log(addDigits(38));

+0

を確認することができ、それをありがとう! –

+0

ようこそ....... –

4
if(sum>9) { 
    return a(sum); // You forgot to return a value from recursive call. 
} 

コードは本当に奇妙に見えますが、

+0

ありがとうございました! –

0

あなたのコードを編集しました。なぜここで再帰的に合計を呼び出すのかわかりません。私はそれが正しいと理解していれば、あなたは数字の桁の和(非負)を返そうとしているだけです。私はまた、あなたのビンを更新

var addDigits = function a(num) { 
    var length=num.toString().length; 
    var value=num.toString(); 
    var sum=0; 
    for(var i=0;i<value.length;i++) { 
     sum+=Number(value[i]); 
    } 
    return sum; 
}; 
console.log(addDigits(23456)); 

以下のようにコードを変更します here

0
var addDigits = function a(num) { 
     var length=num.toString().length; 
     var value=num.toString(); 
     var sum=0; 
     for(var i=0;i<value.length;i++) { 
      sum+=Number(value[i]); 
     } 
     if(sum > 9) { 
      return a(sum); 
     } 
     else 
     { 
      return sum; 
     } 

    }; 

    console.log(addDigits(38)); 
関連する問題