在这个小提琴http://jsfiddle.net/5L8Q8/28/中,如果单击黑色按钮,它将从数组中随机选择两个值(红色或蓝色)之一。随机选择的值分配给ran。在我的实际应用程序中,该数组中将包含16个元素。

如果您使用粉红色的“再次播放”按钮,它将从同一数组中选择一个随机元素,但我想确保它与上次选择的元素不同。

因此,当我单击playagain时,我将ran分配给lastran并将其与数组中下一个随机选择的值进行比较,如果它们相同,则再次随机选择。但是,我的方式不能保证playagain(在ran完成时)是不同的。

我认为我需要一个递归函数,其中注释2在下面的代码中,但是当我尝试创建它时,我一直在破坏代码。

您可以在以下代码中评论3条评论吗?

注意,我是一个相对新手,所以这段代码可能很糟糕...

$("#playagain").click(function(){
    lastran = ran;


    ran = getRandom(myArray, true);

    if (ran === lastran) {

        ran = getRandom(myArray, true); //1. do I need to return this?

           //2. want to test ran === lastran again.. How to set up recursive function?

    } else {

       return; //3.is this the right thing to do here?
    }

});

最佳答案

您可以使用while循环代替if。

while(ran == lastran)
{
  ran = getRandom(myArray, true);
}

它将一直尝试直到获得不同的值。

关于javascript - JavaScript:是否需要递归函数来解决此问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6770261/

10-10 00:22