我可以从递归搜索函数返回两个值吗?

时间:2017-01-26 21:15:23

标签: javascript

陷入了一个奇怪的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 )
  }

这只会产生未定义的。

1 个答案:

答案 0 :(得分:3)

好的,显然答案非常明显:)

使用或声明。

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