利用pos记录递归的层数,当递归到第n + 1层(也就是到了判断x == a[n]时)返回false
C++代码如下:
#include <bits/stdc++.h> // 万能头文件(注意:POJ上无法使用)
using namespace std;
template<class T>
bool in_the_array(const vector<T>& a, int x, int pos) //递归判断元素x是否在数组a中,其中pos代表数组的元素位置,pos < n时合法
{
int n = a.size();
if (pos >= n) return false;
if (x == a[pos] && pos < n)
return true;
else
return in_the_array(a, x, pos + 1); // 递归判断元素x是否在数组a中
}
int main()
{
vector<int> a {1, 3, 2, 4, 3, 6, 5}; // 自定义数组(向量)
int x; // 待判断元素
while (cin >> x)
{
if (in_the_array<int>(a, x, 0)) // 调用递归函数
cout << "Yes\n";
else
cout << "No\n";
}
return 0;
}