Javascript JS递归函数问题
无论过去和现在是一样的(这是一个新的报价生成器),我似乎都无法让它重复 Rekursiv geht meistens schief(很抱歉没有英语) 如果条件为真,则未更改最后一个值:Javascript JS递归函数问题,javascript,function,recursion,Javascript,Function,Recursion,无论过去和现在是一样的(这是一个新的报价生成器),我似乎都无法让它重复 Rekursiv geht meistens schief(很抱歉没有英语) 如果条件为真,则未更改最后一个值: var past = [-1]; // impossible value; function writer() { // on button click for new random quote var current = random(); // get a first random pa
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();
}
更改:
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();
}
random
函数上的注释错误,它返回0..8。不管怎样,这种暴力手段有什么原因吗?用可能的答案填充数组可能更容易,随机选择一个,然后在下一次迭代中将其从数组中删除。感谢random()捕获,虽然这肯定会起作用,但我也很好奇我做错了什么。除了我喜欢的滚动方式之外,没有任何理由使用蛮力。啊–您正在更改当前的但这不会更改数组中的值。行pass.push(current)
立即推送它的值,然后忘记它来自哪里。因此,之后更改当前值不会自动更改其上次按下的值。
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();
}