我用两个版本编写了一个递归代码。第一个通过数组数组传递参数,没有错误。第二个传递了向量向量的参考,执行在中途停止。 这将是第一个版本:
#include<iostream>
#include<vector>
using namespace std;
int n,m;
void bdfs(vector<vector<bool> >& B,int x,int y,vector<vector<bool> >& v) {//passing reference to vector of vector as recursion's parameter and got error in the halfway
if(x < 0 || y < 0 || x >= n || y >= m)return;
if(B[x][y] != 0 || v[x][y])return;
v[x][y] = 1;
bdfs(B,x,y+1,v);
bdfs(B,x,y-1,v);
bdfs(B,x+1,y+1,v);
bdfs(B,x+1,y,v);
bdfs(B,x+1,y-1,v);
bdfs(B,x-1,y+1,v);
bdfs(B,x-1,y,v);
bdfs(B,x-1,y-1,v);
}
int main(){
n=202;
m=208;
vector<vector<bool> > B(202,vector<bool>(208,false));
vector<vector<bool> > v(202,vector<bool>(208,false));
bdfs(B,0,0,v);
return 0;
}
这将是第二个版本,它有错误。
def transactions = Transaction.all //you can use findAll() also
for (Transaction tr : transactions) {
tr.comment = tr.comment + " new words...."
tr.save(flush:true)
}
我想知道关于递归或引用的误用是否有任何问题。请告诉我为什么第二个版本出错了。