石头剪刀布递归
Rock Paper Scissors Recursion
var rockPaperScissors = function(rounds) {
var outcomes = [];
var plays = ['rock', 'paper', 'scissors'];
var playedSoFar = [];
var combos = function(roundsToGo) {
// base case
if (roundsToGo === 0) {
outcomes.push(playedSoFar.slice());
return;
}
for (var i = 0; i < plays.length; i++) {
playedSoFar.push(plays[i]);
combos(roundsToGo - 1);
playedSoFar.pop();
}
};
combos(rounds);
return outcomes;
};
console.log(rockPaperScissors(2));
如果我从playedSoFar
中取出slice()
,则outcomes
只是返回为9个空数组,而不是2轮石头剪刀布游戏中的所有组合:
[ [ 'rock', 'rock' ],
[ 'rock', 'paper' ],
[ 'rock', 'scissors' ],
[ 'paper', 'rock' ],
[ 'paper', 'paper' ],
[ 'paper', 'scissors' ],
[ 'scissors', 'rock' ],
[ 'scissors', 'paper' ],
[ 'scissors', 'scissors' ] ]
当我从playedSoFar
中取出slice()
时,为什么不工作?
.slice()
返回数组的副本,如果您不使用.slice()
而只是推playedSoFar
数组,则其更新的内容将在整个范围内反映,因此它们将反映在combos
数组中。
如果您想保留playedSoFar,那么可以这样做:
outcomes=outcomes.concat(playedSoFar);
相关文章:
- 代码学院的石头剪刀布
- 石头剪刀布游戏功能在Javascript
- 石头剪刀布蜥蜴斯波克游戏逻辑偶尔会输出错误的赢家,我不知道为什么
- Javascript中的石头剪刀布
- 尝试为石头剪刀布游戏显示图像而不是字母
- 石头剪刀布 JavaScript 问题
- 两个玩家石头剪刀布在JavaScript
- 我可以'我不明白为什么得分不高;我不在玩石头、布、剪刀的游戏
- 石头剪刀布游戏错误,Javascript
- 学生试图找出javaScript代码的石头剪刀布蜥蜴史波克
- JavaScript中的石头剪刀布
- 如果,则石头剪刀布游戏
- 石头剪刀布Javascript游戏添加选择限制
- 岩石剪刀的递归解法
- JavaScript中的石头剪刀布
- 而不是提示从图像中选择石头,布,剪刀等游戏
- 石头剪刀布递归
- 总是领带!石头剪刀布游戏
- if 语句 - Javascript 石头剪刀布
- 如何让程序记录“石头-剪刀-布”的分数?游戏