Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
节点javascript递归内存不足_Javascript_Node.js_Recursion - Fatal编程技术网

节点javascript递归内存不足

节点javascript递归内存不足,javascript,node.js,recursion,Javascript,Node.js,Recursion,我正在使用节点执行一个简单的递归,以生成所有10个字符的字符串。 我在执行过程中内存泄漏。 代码如下。 有什么想法吗 我想它可能链接到console.log(word)行。 如果没有这一行,代码似乎可以工作。 但是,如果将结果打印到屏幕上,我的最终目标是使用生成的单词实现http请求。我试过不用丝网印刷,也会产生内存不足的问题 var char = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',

我正在使用节点执行一个简单的递归,以生成所有10个字符的字符串。 我在执行过程中内存泄漏。 代码如下。 有什么想法吗

我想它可能链接到console.log(word)行。 如果没有这一行,代码似乎可以工作。 但是,如果将结果打印到屏幕上,我的最终目标是使用生成的单词实现http请求。我试过不用丝网印刷,也会产生内存不足的问题

var char = [
    'a',
    'b',
    'c',
    'd',
    'e',
    'f',
    'g',
    'h',
    'i',
    'j',
    'k',
    'l',
    'm',
    'n',
    'o',
    'p',
    'q',
    'r',
    's',
    't',
    'u',
    'v',
    'w',
    'x',
    'y',
    'z',
    ' ',
    '\''
];


function recurseWord( keyword ){

    if ( keyword.length >= 10 ){
        return null ;
    }
    else{
        for ( var index = 0 ; index < char.length ; ++index){

            keyword = keyword + char [index];

            console.log (keyword);

            recurseWord (keyword) ;

            keyword = keyword.substring(0, keyword.length-1);

        }
    }
    return null ;
}

var keyword = "";
recurseWord(keyword);
var char=[
“a”,
“b”,
"c",,
“d”,
"e",,
"f",,
"g",,
"h",,
“我”,
"j",,
"k",,
“l”,
“m”,
"n",,
"o",,
"p",,
"q",,
“r”,
“s”,
"t",,
"u",,
"v",,
“w”,
“x”,
“y”,
"z",,
' ',
'\''
];
函数recurseWord(关键字){
如果(关键字长度>=10){
返回null;
}
否则{
对于(变量索引=0;索引
首先,需要将递归调用移出for循环。否则循环将永远不会退出,因为
index
将保持在0

function recurseWord( keyword ){

        console.log (keyword);
    if ( keyword.length >= 10 ){
        return null ;
    }
    else{
        for ( var index = 0 ; index < char.length ; index++){

            keyword = keyword + char [index];

            console.log ("index "+index);

        }
        keyword += recurseWord(keyword.substring(0, keyword.length-1));
    }
    return null ;
}
函数recurseWord(关键字){
console.log(关键字);
如果(关键字长度>=10){
返回null;
}
否则{
对于(变量索引=0;索引
至于内存不足的原因,我不能确切地说,但您可以试试这个。值得注意的是,我并没有因为运行这个而耗尽内存(已经运行了几分钟)

注意:这将锁定您的机器(400多万亿次操作)

var inputArr=“abcdefghijklmnopqrstuvxyz”.split(“”)concat(“”);
函数运行(str){
console.log(str);
}
函数递归(索引,递归){
如果(递归===未定义)
递归=”;
如果(递归长度>=10)
返回;
对于(变量i=0;i递归(inputArr)Jeannot,你必须足够有趣,你不能那样生成它们

这是10的26次方=141'167'095'653'376次操作(即约50亿次操作)


你必须测量它,即使使用C/C++(相当低,接近cpu水平),你也应该只运行10亿次以下的操作(以2016年的cpu功率计算)。

我的快速数学告诉我有296万亿次组合。您确定要为每个应用程序执行web请求吗?嗯,这相当多;-)。我可能会限制为几个字符。另外,我想我会更新代码,在请求结果为负时停止递归。据我所知,我的问题是一般性的;-)事实上,内存用完花了多长时间?我运行了你的代码,到目前为止它似乎还在运行(使用console.log)。而且,从理论上讲,它应该运行良好。您最多只有10个作用域。node的哪个版本/操作系统?node版本5.2.0。它在10秒后崩溃。它一直持续到aaaaaakjl或多或少…不幸的是你错了。我想生成10个字符的所有组合。您的算法只生成一个26个字符的字符串。此外,您的算法没有正确使用递归。事实上,您只需要执行一个直接满足停止条件的递归调用。您期望的结果是什么?['abcdefghij'、'bcdefghijk'、'cdefghijkl',…]我不明白为什么需要递归。你希望得到28^10的结果吗?好吧,我想我的代码没有错,因为我的代码也有同样的错误。当我到达字符串“aaaaaarfs”时,它会很快崩溃(这取决于执行情况:有时崩溃得更快,有时更慢)。目前,我运行的是v5.5.0 Windows x64版本。我让它运行到AAAAAAAA+,没有任何问题。