这个代码的递归形式是什么
what is the recursive form of this code?
我试图在向量b中定位向量a。所以这就像如果向量a在向量b,那么返回true,否则返回false。向量a应该像{1,2,3},b应该像{4,1,2,3,5,7}。这段代码的输出类似于true 1和false 0。所以我的问题是我不希望1和0出现在输出中。我也想用递归的形式写这段代码,所以有人能帮我解决这个问题吗?
bool x(vector<int>& a, vector<int> b)
{
vector<int> index ( b.size(),0 );
int counter = 0;
if ( a.size() <= b.size() ) {
for ( int i = 0; i < a.size(); i++ ) {
for ( int j = 0; j < b.size(); j++ ) {
if ( a[i]== b[j]) {
index[j] = 1;
}
}
}
for ( int i = 0; i < index.size(); i++ ) {
if ( index[i] == 1 ) {
for ( int j = i; j < index.size(); j++ ) {
if ( index[j] == 1 ) {
counter++;
}
}
if(counter == a.size()){
cout<<"true"<<endl;
return true;
break;
}
else{
counter = 0;
cout<<"false"<<endl;
return false;
// continue;
}
}
}
}
return 0;
}
如果您只是不喜欢输出:true 1和false 0。最简单的解决方法是:
if(x(a, b)){
cout<<"true"<<endl;
} else {
cout<<"false"<<endl;
}
但是,在你尝试将你的算法转换为递归算法之前,我担心你的算法是错误的。试试这个:
vector<int> a;
vector<int> b;
a.push_back(1);
a.push_back(2);
a.push_back(3);
b.push_back(1);
b.push_back(1);
b.push_back(1);
cout<<x(a,b)<<endl;
你会得到正确的答案,而正确的答案是错误的。
检查你的算法!
您看到"true 1"answers"false 0"的原因可能是,当您在函数中将"true"answers"false"打印为字符串时,您会返回一个bool,如果您在函数外打印,则默认打印为"1"answers"0"。为了克服这一点,您可以使用这里讨论的std::boolalpha
:在C++中将布尔转换为文本
至于将您的算法转换为递归算法,恐怕在您自己尝试之前,这是Stack Overflow的主题。
正如John所说,您打印的是cout(标准输出)字符串,而不是整数(1/0)。另外,你需要提出解决方案并寻求帮助/建议/反馈。网上有很多关于如何使用它的教程
但是,如果您想递归,您应该创建一个长度与array1大小相同的array3,而您将在array2上递归,以检查array1中是否存在array2的任何元素(作为对象或值)。您需要一个函数来生成一个数组并接收数组(为什么要使用向量?),然后在第二个数组上迭代,将array1、array3和当前索引值作为参数传递。
Fibonacci递归问题几乎在Uni的每一门编程课程中都有教授(或者至少应该是这样),所以这是一个很好的起点。
这个的递归函数:
// it will return true if vector is present
// i is pointer for a
// j is pointer for b
bool subVector(vector<int>& a, vector<int> b,i,j)
{
if( i<a.size() && j<b.size()
{
if(a[i]==b[i])
{
return subVector(a,b,i+1,j+1)
}
else
{
return subVector(a,b,0,j+1)
}
}
else
{
if(i>a.size())
{
return true;
}
else{
return false;
}
}
}
// Calling
subVector(a,b,0,0);
注:未编译。
- 是否总是可以将使用递归编写的程序重写为不使用递归的程序C++,性能观点是什么?
- 这个递归函数有什么作用?运行时的复杂性是多少?
- 什么是"递归嵌套模板"的实际用法示例?
- 递归 noexcept() 的含义是什么?
- 为什么这是无限递归
- 什么是递归启动函数
- 我的链接列表反向递归方法的代码的问题是什么?
- C 堆栈溢出异常,可能是由于递归引起的
- 是尾部递归所需的返回关键字
- 设计生成所有 n 位数字组合的递归函数的最佳方法是什么?
- 递归宏点差的结果是什么
- 内存泄漏可能是由于递归函数造成的
- 使用递归进行硬币更改的基本情况是什么
- 是什么导致了这个张量外积中的无限模板递归
- 在C++中使用递归的主要准则是什么?
- 如何计算对该函数的递归调用,以及正确答案是什么
- 这个代码的递归形式是什么
- 模板参数推导是如何递归工作的
- 模板化递归函数的语法是什么
- 这是使用递归的正确方法吗?