所以,我必须在非有向图中找到所有可能的周期,它们在选定的顶点开始(和结束)。
我在js中编写了一个算法:jsfiddle
但面对非常非常奇怪的问题:在我的递归函数中,参数以某种方式改变了自己!但我甚至不碰它!请帮助我,我已经忍受了16个小时的这个错误! :(
我认为此参数已被此代码更改:
cycle.push(vertex);
但它不应该!因为在他的可见区域中,全局循环变量必须被本地变量覆盖!
答案 0 :(得分:2)
问题在于:
var newCycle = cycle;
你不是克隆它,你只是给同一个对象一个不同的名字。尝试:
var newCycle = cycle.slice(0);