Ver Mensaje Individual
  #88 (permalink)  
Antiguo 05/12/2014, 04:10
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: Petando la pila. Problemas y retos usando recursividad.

Cita:
Iniciado por eferion Ver Mensaje
el return está en el último else, si el código entra en, por ejemplo, el primer if, se llama de forma recursiva a DigitosNumero... pero únicamente el último tendrá el return, el resto de llamadas no tendrán escrito su correspondiente return.

Yo esperaría encontrar algo así:

Aun así no termino de acostumbrarme a eso de separar las instrucciones por coma en vez de por punto y coma... manías que tiene uno :)
Tal vez me expliqué mal. Está es la cuestión:

Código C++:
Ver original
  1. if ( numero > 0 && flag == 0 )
  2.      digitosNumero [ numero % 10 ]++ , DigitosNumero ( digitosNumero , numero / 10 , 0 ) ;

Si entra en el if es porque "numero es mayor de cero ( y flag también ) y lo que hace el if es incrementar el array y a continuación invoca a la función recursiva con el valor de "numero" dividido entre 10 y sucesivamente es invocada "hasta" que "numero" es es cero, momento en que si que actúa el return 1, pero no antes.

Un fuerte saludo amigo eferion y gracias por mirar con tanto detenimiento el código, gracias y desde ya ¡¡¡ Felices Fiestas ¡¡¡.

¡¡¡Saluditos!!!