2017-01-26 8 views
0

奇妙なJavaScript関数プログラミングの穴に詰まっています。再帰検索関数から2つの値を返すことはできますか?

ここでは、次のとおりです。

// 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) 
} 
関連する問題