N Queens problem

Im trying N queens Problem by backtracking. My code doesnt give output a Q in last column . Why So ??

#include
#include<stdio.h>

#define n 8

using namespace std;
int abs(int x)
{
    if(x<0)
        x=-x;
    return x;
}
bool is_safe(char sol[n][n],int x,int y)
{
    if(x>=0&&n>x&&y>=0&&n>y)
    {
        // check rows
        for(int i=0;i<n;i++)
        {
            if(sol[x][i]=='Q')
                return false;
        }

        //  diagonals checking

        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
           {
              if(abs(i+j)==abs(x+y) || abs(i-j)==abs(x-y))
              {
                  if(sol[i][j]=='Q')
                    return false;
              }

            }
    }

    return true;

}

// Printing Board

 void print_board(char sol[n][n])
 {
     for(int i=0;i<n;i++)
     {
         for(int j=0;j<n;j++)
            printf(" %c ",sol[i][j]);
         printf("\n");
     }
 }
 bool recursive_function(char board[n][n],int column);

bool  solve_N_Queens()
{
    char board[n][n];
    // Initialise

    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
        board[i][j]='*';





    if(recursive_function(board,0)==false)
       {printf("No Solution exists !!!"); return false;}

    else
    { printf("\n\n");
        print_board(board);



return true;}

}

bool recursive_function(char board[n][n],int column)
{
    if(column==n)
        return true;
printf("%d",column);
    int row=0;
    for(row=0;row<n;row++)
    {
        if(is_safe(board,row,column))
        {
            board[row][column]='Q';
              if(recursive_function(board,column+1))
                return true;
                else
                    board[row][column]='*';

        }


    }
    return false;

}



int main()
{
    solve_N_Queens();
    return 0;
}