2017-01-26 124 views
0

陷入了一個奇怪的JavaScript函數編程漏洞。我可以從遞歸搜索函數返回兩個值嗎?

這就是:

// Given an integer n, can n be reached by some combination of plus five and times three? 

function recursiveSearch (n) { 
    // if attempt matches return success 
    // if attempt produces neutral keep trying 
    // if attempt matches less than 1 return failure 
    if (n === 1) return true 
    if (n > 1) { 
    return recursiveSearch(n-5), recursiveSearch(n/3) 
    } 
    else return false 
} 

console.log(1, recursiveSearch(1)) 
console.log(3, recursiveSearch(3)) 
console.log(6, recursiveSearch(6)) 
console.log(7, recursiveSearch(7)) 
console.log(9, recursiveSearch(9)) 
console.log(13, recursiveSearch(13)) 
console.log(51, recursiveSearch(51)) 
console.log(247, recursiveSearch(247)) 

我顯然不能從一個函數返回兩個不同的東西,但如果我不回,我不能在我的搜索分支出來:

if (n > 1) { 
    recursiveSearch(n-5) 
    recursiveSearch(n/3) 
    } 

這只是產生未定義。

+0

可能重複[在JavaScript中返回多個值?](http://stackoverflow.com/questions/2917175/return-multiple-values-in-javascript) – dorukayhan

回答

3

好吧,顯然答案很明顯:)

使用或聲明。

if (n > 1) { 
    return recursiveSearch(n-5) || recursiveSearch(n/3) 
}