我的函数需要更改为迭代,因为执行速度很慢 有两个递归调用,取决于哪个条件为真。
这是这样的:
(我有函数外的静态数组,比方说数据)
void func(int a, int b, int c, int d) {
//something
//non-recursive
//here..
for (i=0; i<data.length; i++) {
if (!data[i].x) {
data[i].x = 1;
if (a == data[i].value1)
func(data[i].value2,b,c,d);
else if (a == data[i].value2)
func(data[i].value1,b,c,d);
data[i].x = 0;
}
}
}
!!
编辑:这是我的算法:http://pastebin.com/F7UfzfHv
函数在图中搜索从一个点到另一个点的每个路径,但仅返回(到数组)一个路径,其中只有唯一的顶点。
!!
而且我知道管理它的好方法是使用堆栈...但我不知道如何。有人可以给我一个暗示吗?
答案 0 :(得分:0)
很有可能你的功能可能会一次又一次地计算相同的东西,在技术术语中称为overlapping sub-problems
(如果你熟悉dynamic programming
那么你可能知道) 。首先尝试确定是否是这种情况。既然你没有告诉任何关于什么功能的事情,我也说不出确切的问题。
由于递归在内部使用堆栈,因此使用stack
时所讨论的内容并没有多大用处。使用外部堆栈而不是内部堆栈更容易出错并不是很有用。