# Thread: Need an explanation regards the following recursion

1. Member
Join Date
Dec 2010
Posts
59
Rep Power
0

## Need an explanation regards the following recursion

Hi, need help understanding the calculation aspect of: if ((q[i] - q[n]) == (n - i)) return false; // same major diagonal
in the following code:

Java Code:
```public class Queens {

/***********************************************************************
* Return true if queen placement q[n] does not conflict with
* other queens q[0] through q[n-1]
***********************************************************************/
public static boolean isConsistent(int[] q, int n) {
for (int i = 0; i < n; i++) {
if (q[i] == q[n])             return false;   // same column
if ((q[i] - q[n]) == (n - i)) return false;   // same major diagonal
if ((q[n] - q[i]) == (n - i)) return false;   // same minor diagonal
}
return true;
}```

Thanks :-)

2. ## Re: Need an explanation regards the following recursion

Draw an eight x eight grid on a piece of paper; the top row of your grid contains the coordinates (0, 0) (0, 1) (0, 2) (0, 3) (0, 4) (0, 5) (0, 6) and (0, 7); the next row contains the coordinates (1, 0) (1, 1) (1, 2) ... etc. Supose your array q contains eight elements, one for each column in your grid and q[i] contains the second coordinate in the coordinate pair (i, q[i]).

If q[i] ==q[n] there are two queens in columns i and n that are positioned in the same row. Check your grid and try to find a regularity for two values in the same upgoing diagonal and similar for a down going diagonal.

kind regards,

Jos

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•