2017-01-26 3 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) 
} 
Смежные вопросы