我試圖創建一個函式來回傳一個數字的數字根。我以為我已經想好了,但我的函式一直回傳未定義。誰能告訴我哪里出了問題?
以下是我的代碼:
function digital_root(n) {
if (n < 10){
console.log(n) // this works.
return n //this returns undefined
}
var turnToArray = n.toString().split(''/span>)
var joinArray = turnToArray.join(' ')
result = eval(joinArray)
digital_root(結果)。
}
console.log(digital_root(120) //應該回傳3。
uj5u.com熱心網友回復:
如果n >= 10你不回傳任何東西,即把函式digital_root(n)的最后一行改為return digital_root(result)。
uj5u.com熱心網友回復:
你需要從最外層的遞回函式回傳一個值。
這里是更新的代碼。
function digital_root(n){
if (n < 10){
console.log(n) // this works.
return n //this returns undefined
}
var turnToArray = n.toString().split(''/span>)
var joinArray = turnToArray.join(' ')
result = eval(joinArray)
return digital_root(result)
}
uj5u.com熱心網友回復:
因為你正在尋找錯誤的回報
實際上你的代碼是這樣的你的代碼是這樣的
function digital_root(n)
{
if (n < 10)
{
console.log(n) // This works.
return n // this returns the same n to the parent recursive call.
}
var turnToArray = n.toString().split(''/span>)
var joinArray = turnToArray.join(' ')
result = eval(joinArray)
digital_root(result) // get the value 3。
return //隱式回傳未定義的值。
}
你的代碼應該改成
function digital_root(n)
{
if (n < 10)
{
console.log(n)
return n
}
let turnToArray = n.toString().split(''/span>)
let joinArray = turnToArray.join(' ')
result = eval(joinArray)
return digital_root(結果)。
}
console.log(digital_root(120) // return 3
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
那么簡單:
function digital_root(n)
{
if (n < 10) return n
return digital_root([...n.toString() ]. reduce((v,x)=>(v = x,v) ,0)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/332614.html
標籤:
