陷入了一个奇怪的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 )
}这只会产生不确定的东西。
发布于 2017-01-27 05:16:10
好的,答案显然是显而易见的:)
使用or语句。
if (n > 1) {
return recursiveSearch( n-5 ) || recursiveSearch( n/3 )
}https://stackoverflow.com/questions/41883110
复制相似问题