在递归中使用引用时遇到错误

时间:2017-05-26 04:59:29

标签: c++ recursion pass-by-reference void

我用两个版本编写了一个递归代码。第一个通过数组数组传递参数,没有错误。第二个传递了向量向量的参考,执行在中途停止。 这将是第一个版本:

    #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)
    }

我想知道关于递归或引用的误用是否有任何问题。请告诉我为什么第二个版本出错了。

0 个答案:

没有答案