2015-12-20 1 views
2

Я реализовал рекурсивную функцию для решения проблемы с монетами, обсуждаемой на этом geeksforgeeks page. Мой код работает, потому что он отвечает на правильный ответ от Math.max(coin_l, coin_r), и все же возвращаемое значение регистрируется здесь console.log('input_1 result', maxPoints(input_1)); возвращает undefined. Не уверен, что происходит.JavaScript рекурсивная функция консоль ведение журнала правильный ответ, но возвращение не определено

Монета игры Кодекс

var maxPoints = function(coins, i, j) { 
    if (i === undefined || j === undefined) maxPoints(coins, 0, coins.length - 1); 
    if (j === i) return coins[i]; 
    if (j === i + 1) return Math.max(coins[i], coins[j]); 

    var coin_l = coins[i] + Math.min(maxPoints(coins, i + 2, j), maxPoints(coins, i + 1, j - 1)); 
    var coin_r = coins[j] + Math.min(maxPoints(coins, i + 1, j - 1), maxPoints(coins, i, j - 2)); 

    console.log(Math.max(coin_l, coin_r)); 
    return Math.max(coin_l, coin_r); 
}; 

var input_1 = [5, 3, 7, 10]; 
var input_2 = [8, 15, 3, 7]; 

var run = function() { 
    console.log('input_1 result', maxPoints(input_1)); 
    console.log('input_2 result', maxPoints(input_2)); 
}; 

run(); 

ответ

2

ваш первый, если оператор отсутствует return

if (i === undefined || j === undefined) **return** maxPoints(coins, 0, coins.length - 1); 
Смежные вопросы