void Stack::addPlateauNeighborRecursive(double value,int h,int i,int j, std::vector< std::vector< std::vector > > &tmpFlag, std::vector< std::vector > &walkTmp) { //Check only nearest neighbors for(int a=-1 ; a<=1 ; a+=2 ) { int hh = h+a; if( hh>=0 && hh tmpPos(3); tmpPos[0]=hh;tmpPos[1]=i;tmpPos[2]=j; walkTmp.push_back( tmpPos ); addPlateauNeighborRecursive(value,hh,i,j,tmpFlag,walkTmp); } int ii = i+a; if( ii>=0 && ii tmpPos(3); tmpPos[0]=h;tmpPos[1]=ii;tmpPos[2]=j; walkTmp.push_back( tmpPos ); addPlateauNeighborRecursive(value,h,ii,j,tmpFlag,walkTmp); } int jj = j+a; if( jj>=0 && jj tmpPos(3); tmpPos[0]=h;tmpPos[1]=i;tmpPos[2]=jj; walkTmp.push_back( tmpPos ); addPlateauNeighborRecursive(value,h,i,jj,tmpFlag,walkTmp); } } }