参照によって変数を渡そうとしていますが、期待どおりに機能しません (または期待どおりに機能しません)。
boardCopy
が呼び出された後も空のままで、callMeMaybe
その理由がわかりません。最初の関数で既にボードをコピーboardCopy = board.slice(0)
し、2 番目の関数でこれを行わない場合、それは機能しますが、実際のボードははるかに大きくcallMeAnytime
なり、再帰関数になり、はるかに複雑になるため、それはオプションではありません。 .
callMeAnytime(3, [], [1, 0, 1, 1]);
function callMeAnytime(index, moves, board) {
for (var i = index; i >= 0; i--) {
var boardCopy = [];
callMeMaybe(i, board, boardCopy)
console.log(board); // [1, 1, 1, 1]
console.log(boardCopy); // []
}
}
function callMeMaybe(i, board, boardCopy) {
if (board[i] == 1) {
boardCopy = board.slice(0);
boardCopy[i] = 0;
console.log(board); // [1, 1, 1, 1]
console.log(boardCopy); // [1, 1, 1, 0]
}
}