vir*_*ss8 -1 c++ recursion vector
我有一个家庭作业,使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我试着递归地做:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么,因为如果我将函数结果保存在一些bool var中,结果是true,false和false!
你缺少的是递归调用中的return语句:
cout << "array.back = " << array.back() << endl;
array.pop_back();
return mfind(x, array);
Run Code Online (Sandbox Code Playgroud)
基本上你想要做的是:
false,搜索的元素不存在.true,搜索到的元素就在那里.