2017-06-05 116 views
0

我需要小代碼中的小幫助。該函數返回undefined,我想返回總和的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

我編輯了你的代碼。我不知道爲什麼在這裏遞歸地調用sum。如果我理解它是正確的,那麼你只是試圖返回一個數字的數字總和(非負數)。我修改你的代碼像下面

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)); 

我更新了你的bin也可以檢查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));