Javascript中的简单递归问题
这是代码片段,它进入了一个无限循环-带有“太多递归错误” 无法理解这里的问题是什么。我觉得我犯了一个很简单的错误Javascript中的简单递归问题,javascript,recursion,Javascript,Recursion,这是代码片段,它进入了一个无限循环-带有“太多递归错误” 无法理解这里的问题是什么。我觉得我犯了一个很简单的错误 您的终止条件如下: for(根中的变量i){ 因此,为什么不使用类似以下的console.log(i)来查看它是否按照您的想法运行。这种技术通常比调试器更快。您的终止条件如下: for(根中的变量i){ 因此,为什么不使用类似以下的console.log(i)来查看它是否按照您的想法运行。这种技术通常比调试器更快。您在递归中不断引用原始树-您可能希望在递归传递的节点上拆分: getL
您的终止条件如下:
for(根中的变量i){
因此,为什么不使用类似以下的
console.log(i)
来查看它是否按照您的想法运行。这种技术通常比调试器更快。您的终止条件如下:
for(根中的变量i){
因此,为什么不使用类似以下的
console.log(i)
来查看它是否按照您的想法运行。这种技术通常比调试器更快。您在递归中不断引用原始树-您可能希望在递归传递的节点上拆分:
getLeaves: function(roots){
for(var i in roots){
var root = roots[i];
if( !(root.cf)){
this.WData.wf.leaves.push( root );
return false;
}
else{
this.getLeaves( root.cf.split(',').map(Number) );
}
}
return false;
在递归中不断引用原始树-可能希望在递归传递的节点上拆分:
getLeaves: function(roots){
for(var i in roots){
var root = roots[i];
if( !(root.cf)){
this.WData.wf.leaves.push( root );
return false;
}
else{
this.getLeaves( root.cf.split(',').map(Number) );
}
}
return false;
您有几个问题:
根
而不是this.WData.wf.roots
,例如:
var root = roots[i];
leaves : ["asdf"],
$('#result').append( SW.WData.wf.leaves.join(",") );
您有几个问题:
根
而不是this.WData.wf.roots
,例如:
var root = roots[i];
leaves : ["asdf"],
$('#result').append( SW.WData.wf.leaves.join(",") );
据我所知,您需要更改
features
条目中cf
属性的值,以反映您已经对它们进行了解析。如果不这样做,您的代码的这个分支
else{
this.getLeaves( this.WData.wf.features[root].cf.split(',').map(Number) );
}
如果我是正确的,将无限地向叶
数组
添加值
因此,请尝试添加以下内容:
else {
var cf = this.WData.wf.features[root].cf ; // save the current cf value
//... change this.WData.wf.features[root].cf to the desired value
this.getLeaves( cf.split(',').map(Number) ) ;
}
顺便说一下,
Array.map
是一个特定于浏览器实现的功能(适用于Gecko浏览器,例如Firefox)。换句话说,如果没有实现,代码将无法工作
此外,在我看来,您最好添加注释并折叠代码,使其更易于理解。现在的编写方式虽然简洁,但很难理解其基本目的。据我所知,您需要更改
功能
条目中cf
属性的值,以反映您的需要已分析它们。如果不分析,则此代码分支
else{
this.getLeaves( this.WData.wf.features[root].cf.split(',').map(Number) );
}
如果我是正确的,将无限地向叶
数组
添加值
因此,请尝试添加以下内容:
else {
var cf = this.WData.wf.features[root].cf ; // save the current cf value
//... change this.WData.wf.features[root].cf to the desired value
this.getLeaves( cf.split(',').map(Number) ) ;
}
顺便说一下,
Array.map
是一个特定于浏览器实现的功能(适用于Gecko浏览器,例如Firefox)。换句话说,如果没有实现,代码将无法工作
此外,在我看来,最好添加注释并折叠代码,使其更易于理解。现在的编写方式虽然简洁,但很难理解其基本目的