Necesito escribir una función recursiva que sume todos los dígitos del número dado, excepto el dígito más a la derecha. Por ejemplo: 56643 -> 5 + 6 + 6 + 4 = 21
O si el número es 5: la suma será 0 porque no sumaremos el dígito correcto (en este ejemplo también es nuestro único dígito).
Intenté escribir la función recursiva, pero sin éxito.
int sumDig(int num) { if (num < 10) return 0; return (num % 10 + sumDig(num / 10)); }Gracias por todo
La función que ha escrito imprimiría la suma de todos los dígitos de num excepto el primer dígito, que es lo contrario de lo que desea lograr. Considere la siguiente función: -
int sumDig(int num) { if (num > 0) return (num % 10 + sumDig(num / 10)); else return 0; } Puede llamar directamente a esta función con num/10 para lograr su caso de uso. Alternativamente, puede usar una función contenedora.
Debido a que el caso base es num<10 , en realidad está sumando todos excepto el dígito más significativo.
Para obtener todos excepto el último, esto se puede hacer haciendo que la función tome el penúltimo dígito y agregándolo al resultado de la llamada recursiva.
int sumDig(int num) { if (num == 0) { return 0; } return ((num / 10) % 10) + sumDig(num / 10); }