Hola ControlCD
Usa las etiquetas de código, por favor, no las de citar
Primero fíjate que el método
decbin() no debería devolver nada, porque el valor se almacena en un array según como lo tienes hecho, así que para visualizarlo deberías poner:
r.decbin(5);
cout<<"El valor en binario es: "<<r.imprime()<<endl;
Aparte, para la recursividad, creo que lo más sencillo es un método auxiliar privado que realmente sea quien haga la recursividad, esto es:
void Recursivo::decbin(int p)
{
decbinaux(p,0);
}
private:
void Recursivo::decbinaux(int p, int pos)
{
if (p<=1)
arr[pos]=p;
else
{
arr[pos++]=p%2;
decbinaux(p/2, pos);
}
}
Así no tenemos que rompernos la cabeza con la posición en el vector
arr[].
Espero te haya sido de ayuda. Salud.
P.D: ojo con los números negativos, deberías de utilizar el modificador
unsigned para los tipos.