陷入了一个奇怪的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 :(得分:3)
好的,显然答案非常明显:)
使用或声明。
if (n > 1) {
return recursiveSearch( n-5 ) || recursiveSearch( n/3 )
}