gpt4 book ai didi

javascript - "too much recursion"具有重复的变化

转载 作者:行者123 更新时间:2023-11-28 15:32:24 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,列出所有可能的重复变化。我所做的返回“太多递归”。

function variants(amount, chars, junk){
var junkarray = junk.split(",");
var newjunk;
if(junkarray[junkarray.length-1]==amount){
newjunk = ",";
}
if(junk.length==Math.pow(chars.length, amount)){
console.log(junk);
return;
}else{
for(var i = 0; i < chars.length; i++){
variants(amount, chars, junk+newjunk+chars[i]);
}
}
}
variants(3, ["1", "2"],"");

最佳答案

你的问题是你从未达到退出子句,并且你得到了无限递归。您的问题出在这里:

var newjunk;
...
variants(amount, chars, junk+newjunk+chars[i]);

您没有将 newjunk 初始化为任何内容,因此当它跳过有机会设置它的部分时,您的变量仍然未定义。因此,当您将字符串连接到 else 子句中的其他变量时,发生的事情是 js 将值“undefined”转换为“undefined”字符串。对于测试剪切粘贴此行:

var newjunk; var junk = ""; var chars = ["1","2"]; console.log(result, junk+newjunk+chars[0]); 

进入您最喜欢的控制台。请注意,它打印出 undefined1。解决这个问题的方法是将 newjunk 初始化为空字符串:

var newjunk = ""

这是一个jsfiddle的变化。

调试递归问题的一个好方法是拿出一张纸和一支笔,对代码的每一行进行物理跟踪,以确保退出子句被命中。您还可以以全局计数变量的形式添加提前退出条件,并在函数内递增该条件。当此计数变量达到特定值时,退出。

关于javascript - "too much recursion"具有重复的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com