Member Avatar
Hey everyone, 
    I am making a nqueen program that’ll read me an array of the position of the 
    queen. I developed to different methods to do this. One is the recursion way 
    and the other is the iteration method . My problem lies in the recursion. I am trying 
    to count and display the number of solutions that the method finds, but I simply can’t
    figure out how to do that because the count is inside a loop and once I make a 
    recursive call the method starts the count all over again. PLEASE HELP!!

package queenproblem;

import java.util.Scanner;
import java.util.*;
import java.util.Arrays;

public class Queenproblem {

     * @param args the command line arguments
    public static void main(String[] args) {
        Scanner kb = new Scanner(;
        System.out.print("n = ");
        int n = kb.nextInt();
        int []a = new int[n];

        iNqueen(n, a);
    public static boolean aPlace(int k , int[] x){
        for(int i = 0; i < k; i++){
            if((x[i] == x[k])|| (Math.abs(x[i]- x[k])== Math.abs(i - k)))
                return false;
        return true;
    public static void rNqueen(int k, int [] x){
        int count = k;
        for(int i = 0; i< x.length; i++){
            x[k]= i+1;


                if(k == (x.length-1)){
                    count = x.length -count;
                    System.out.print(count + " = ");
                 //System.out.println("qcount =" + qcount);
    public static void iNqueen(int n, int []x){
        int k2= 0;
        x[k2]= 0;
        int qcount= 0;
        while(k2 != -1){
            x[k2] = x[k2] + 1;
            while((x[k2] <= n)&& (!aPlace(k2, x))){
            if(x[k2]<= n){
                if(k2 == n-1){
                    System.out.print(qcount + " = ");
                    x[k2]= 0;
        System.out.println("There are "+ qcount + " solutions.");
    public int countNqueen(int x){
        return x+1;

Recommended Answers

All 2 Replies

uhm you use count(n) however i see no method for this where is the method? because if you are incrementing a simple int you would use variable++? where is count defined? it cannot be defined within the method that is recursively called thats the key. So either make it global or pass as a parameter to the method which increments count++

see pseudo for correct way:

class X {
int count=0;
main() {
for(i<4;i++) {
print(count);//display 4 
methodIncrementingCount() {
Member Avatar

wow that was it!! Thanks so much

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.