i want to print the double base representation of a number
ie if my number is 38 i shud get 36 + 2 and for 655 i shud get 648 + 6 + 1.
here's my code:

Code:
 
unsigned long bs(unsigned long a[],unsigned long d, unsigned long beg, unsigned long end, unsigned long x)
{    
     int mid;    
     mid=(beg+end)/2;    
     if (x<a[mid])    
     {        
              end=mid-1;        
              bs(a,d,beg,end,x);    
     }    
     else if(x<a[mid])    
     {        
              beg=mid+1;        
              bs(a,d,beg,end,x);    
     }
     else if(x>a[end])
     {    cout<<a[end]<<" + ";  
           return a[end];   
     }
     else if(x==a[mid])
     {  
          cout<<"FOUND!!\n";
          return a[mid];
     } 
}
void alg(unsigned long a[],unsigned long d, unsigned long x)
{
     unsigned long num;
     num=(x-bs(a,d,0,30,x));
     if (num>0)
         alg(a,d,num);
  
}
main()
{
      int c,n,d;
      d=c=(unsigned long)(pow(32,2));
      unsigned long a[d],b[c],t,x,y;
      d=c=0;
      a[0]=0;
      b[0]=0;
      for(int i=0;i<32;i++)
      {
          for(int j=0;j<32;j++)
          {
              b[c]=(unsigned long)(pow(2,i)*pow(3,j));
              if(j==0 || ULONG_MAX/pow(3,j)>pow(2,i))
              {
                 a[++d]=b[c++];
                // cout<<i<<"\t"<<j<<"\t"<<a[d]<<endl;
              }
              else
              {
                  break;
              }
           }
       }
     sort(a,a+d);
     cout<<"enter element:";
     cin>>x;
     cout<<"its representation is :"<<endl;
     alg(a,d,x);
     system("PAUSE");
}
wat im doing in my code for alg() is im finding the element in the array using bs()
if the elemnt i want is in the array im printing that otherwise im finding the element that is closest (from the lesser side) to it and finding the difference ie (x - closest number to x) and calling alg for the difference and so on.
ie for 655 the closest elemnt is 648 and 655-648 is 7 , calling alg with 7 gives the closest elemnt as 6 n 7-6 is 1 n so on..
in my bs() code im returning the elemnt or the one which is closest to it. but somehow its not printing that elemnt n neither is it returning it.


please help...
thanks for reading!