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í:
Código C:
Ver originalint DigitosNumero ( int digitosNumero [ 10 ], int numero , int flag ) {
if ( numero > 0 && flag == 0 )
return digitosNumero [ numero % 10 ]++ , DigitosNumero ( digitosNumero , numero / 10 , 0 ) ;
else if ( numero > 0 && flag == 1 )
return digitosNumero [ numero % 10 ]-- , DigitosNumero ( digitosNumero , numero / 10 , 1 ) ;
else return 1 ;
}
o así:
Código C:
Ver originalint DigitosNumero ( int digitosNumero [ 10 ], int numero , int flag ) {
int to_return = 1;
if ( numero > 0 && flag == 0 )
digitosNumero [ numero % 10 ]++ , to_return = DigitosNumero ( digitosNumero , numero / 10 , 0 ) ;
else if ( numero > 0 && flag == 1 )
digitosNumero [ numero % 10 ]-- , to_return = DigitosNumero ( digitosNumero , numero / 10 , 1 ) ;
return to_return;
}
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 :)