gpt4 book ai didi

c - 使用数组作为 C 递归方法的输入

转载 作者:行者123 更新时间:2023-11-30 17:09:18 25 4
gpt4 key购买 nike

我在递归函数中使用数组作为输入时遇到问题,这里的问题是:我将数组值设置为我在第一级递归中想要的值,但是对级别中的数组进行的更改递归的2-3以某种方式改变了递归1级的数组。这不应该发生吧?因为每次调用该方法时,它都应该存储它所调用的特定数组,对吗?

这是递归方法的代码,该方法称为 vertexCover:

 int vertexCover (int start, int covering, int seen [1000]){
if(covering==0){

if(start>numberOfEdges-1){
return 1;
}

else{
while(start<=numberOfEdges-1){
if(seen[edge1[start]]==0 && seen[edge2[start]]==0){
return 0;
}

start++;
}

return 1;
}

}

else{
while(seen[edge1[start]]!=0 || seen[edge2[start]] !=0){
start++;
if(start>numberOfEdges-1){
return 1;
}
}

seen[edge1[start]]=1;

int a= vertexCover(start + 1, covering-1, seen);

seen[edge1[start]]=0;
seen[edge2[start]]=1;

int b = vertexCover(start+1,covering-1,seen);

if(a==1 || b==1){
return 1;
}

else {
return 0;
}
}

}

我想要做的是确保对递归方法的每次调用都有自己唯一的数组,对数组所做的更改不会影响上次调用存储的数组。由于某种原因它没有这样做。

最佳答案

如果你真的想这样做,你将需要像这样复制你的数组。

int vertexCover (int start, int covering, const int array [1000]){
int seen[1000];
memcpy(seen, array, sizeof(seen));
...
}

但是如果你这样做,你的程序会非常慢,所以我认为你应该使用短数组或找到另一种方法来完成你想要的事情。

关于c - 使用数组作为 C 递归方法的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33337330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com