简体   繁体   English

JS 递归函数问题

[英]JS Recursive Function Issues

I can't seem to get this to repeat whenever past and current are the same (it's a new quote generator).每当过去和现在相同时,我似乎无法重复此操作(这是一个新的报价生成器)。

    function random() { // random number 0-9
      var number = Math.floor(Math.random() * 9);
      return number;
    }

    var past = [0];     // array of past quotes

    function writer() { // on button click for new random quote
      var current = random();
      past.push(current);
      function checker() {
        if (past[past.length - 2] === past[past.length - 1]) {
          current = random();
          checker();
        } 
      }
      checker();
    }

Rekursiv geht meistens schief (sorry no English for that) Rekursiv geht meistens schief (抱歉没有英语)

You did not change the last value if the condition is true:如果条件为真,您没有更改最后一个值:

var past = [-1]; // impossible value;

function writer() { // on button click for new random quote
  var current = random();       // get a first random
  past.push(current);           // add this to past array
  function checker() {
                                // check last two values
    if (past[past.length - 2] === past[past.length - 1]) {
      current = random();       // if equal, get a new random;
      checker();                // re-call - BUT -
                                // as there' actually no change to past,
                                // we're in an infinite loop.
    }                           
  }
  checker();
}

Change:改变:

var past = [-1]; // impossible value;

function writer() { // on button click for new random quote
  var current = random();       // get a first random
  past.push(current);           // add this to past array
  function checker() {
                                // check last two values
    if (past[past.length - 2] === past[past.length - 1]) {
      current = random();       // if equal, set a new random even to past
      past[past.length - 1] = current;
      checker();                // re-call 
    }                           
  }
  checker();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM