This is another function I wrote to traverse the knight around the chess board. This version basically checks to see if the space is valid first then it moves to that spot. I think the problem here is, is that at count 31 the knight ends up being in the space the top right corner and the only valid moves that are not off the board have been already jumped on to by the knight during previous moves. So, I don't know what I'm asking for here. But is there any way to fix this. Should I remove the condition in the if blocks where the array[ver][hor]==0 for the knight to jump on to.

	public static boolean traverseII(int count, int ver, int hor){
 
	board[ver][hor] = count;		//store the count number at that location at the board
 
	if(count >= 64){
		return true;
	}
 
	//up 2 left 1
	else if (ver > 1 && hor > 0 && board[ver-2][hor-1] == 0 && traverseII(count + 1, ver-2, hor-1))    
          return true;    
    //up 2 right 1
    else if(ver > 1 && hor < 7 && board[ver-2][hor+1] == 0 && traverseII(count + 1,ver-2,hor+1))    
         return true;  
 
    //down 2 right 1
    else if(ver < 6 && hor < 7 && board[ver+2][hor+1]== 0 && traverseII(count + 1,ver+2,hor+1))
    	 return true;
    //down 2 left 1
    else if(ver < 6 && hor > 0 && board[ver+2][hor-1]== 0 && traverseII(count + 1,ver+2,hor-1))
    	 return true;
 
    //right 2 up 1
    else if(hor < 6 && ver > 0 && board[ver-1][hor+2]== 0 && traverseII(count + 1,ver-1,hor+2))
    	 return true;
    //right 2 down 1
    else if(hor < 6 && ver < 7 && board[ver+1][hor+2]== 0 && traverseII(count + 1,ver+1,hor+2))
    	return true;
 
    //left 2 up 1
    else if(hor > 1 && ver > 0 && board[ver-1][hor-2]== 0 && traverseII(count + 1,ver-1,hor-2))
    	 return true;
    //left 2 down 1
    else if(hor > 1 && ver < 7 && board[ver+1][hor-2]== 0 && traverseII(count + 1,ver+1,hor-2))
    	 return true;
 
    if(count >= 57)
    	globalCount = count;		//test to see how high the program gets to, it does not get past a count of 57;
 
    return false;
 
}