La idea es ir restandole al número sucesivamente 1, 2, 3, ....
Cada vez que se resta una cifra comprobamos el resultado:
* si es cero: el número cumple la condición (es igual a la suma).
* si es menor que cero: no cumple (no es la suma de los elementos).
* si es mayor que cero: continuamos restando.
Solo hay que modificar la función:
int num_guay(int n, int cont)
{
int aux = n - cont; // realizamos la resta
if (n == 0) return 1;
else if (n < 0) return 0;
else return num_guay(aux, ++cont); // continuamos restando lo que queda por la cifra siguiente.
}
La primera llamada a la función será con los datos:
donde n es el número y 1 la primera cifra a descontar.