所以,我必须找到非有向图中所有可能的循环,这些循环在选定的顶点开始(和结束)。
我用js写了一个算法:jsfiddle
但是遇到了非常非常奇怪的问题:在我的递归函数中,参数以某种方式改变了自己!但我什至不碰它!请帮助我,我已经被这个错误折磨了 16 个小时了! :(
我认为这个参数被这段代码改变了:
cycle.push(vertex);
但不应该!因为在他的可见区域,全局循环变量必须被局部循环变量覆盖!
最佳答案
问题是这样的:
var newCycle = cycle;
你不是克隆它,你只是给同一个对象一个不同的名称。尝试:
var newCycle = cycle.slice(0);
关于javascript - 递归函数中的参数会以某种方式改变自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789952/