我有一个家庭作业,使用C ++中的向量。我必须实现两个向量的交集和差异,以及递归的所有向量。
首先,我创建迭代版本,工作得很好:
bool mfind(int x, vector<int> array) {
if (array.size() != 0) {
while (array.size() != 0) {
if (array.back() == x) {
return true;
} else {
array.pop_back();
}
}
return false;
} else {
cout << "array is empty" << endl;
return false;
}
}
然后我试着递归:
bool mfind(int x, vector<int> array) {
if (array.size() != 0) {
if (array.back() == x) {
cout << "array.back == a" << endl;
return true;
} else {
cout << "array.back = " << array.back() << endl;
array.pop_back();
mfind(x, array);
}
} else {
cout << "array is empty" << endl;
return false;
}
}
我做错了什么,因为如果我将函数结果保存在一些bool var中,结果都是,true和false!
答案 0 :(得分:5)
您缺少的是递归调用中的return语句:
cout << "array.back = " << array.back() << endl;
array.pop_back();
return mfind(x, array);
基本上你想做的是:
false
,搜索到的元素不存在。 true
,搜索到的元素就在那里。