Cita:
Iniciado por Pantaláimon Pero ahora pienso que sí deberían hacerse por las razones que he explicado. Es decir, la función con ver == 0 debe hacer todos los cálculos excepto los directamente relacionados con la salida estándar.
Mi versión:
Código C++:
Ver originalvoid bucleChequeo( int numero, int candidato, int primerPrimo, int ver )
{
int exp = ComprobarPrimo
( &numero
, candidato
); {
if ( primerPrimo
== 0 ) printf( " *" ); if ( exponente == 1 )
else if ( exponente > 0 )
printf( " %d^%d", base
, exponente
);
primerPrimo = 0;
}
candidato += 2;
if ( numero > 1 )
bucleChequeo( numero, candidato, primerPrimo, ver );
}
Tu propuesta:
Código C++:
Ver originalvoid bucleChequeo( int numero, int candidato, int primerPrimo, int ver )
{
int exp = ComprobarPrimo
( &numero
, candidato
); {
if ( ver
&& primerPrimo
== 0 ) printf( " *" ); if ( ver && exponente == 1 )
else if ( ver && exponente > 0 )
printf( " %d^%d", base
, exponente
);
primerPrimo = 0;
}
candidato += 2;
if ( numero > 1 )
bucleChequeo( numero, candidato, primerPrimo, ver );
}
En ambos casos el algoritmo calcula de forma correcta la descomposición del número, que es lo que se pide en el enunciado... la única diferencia es que mi versión es ligeramente más eficiente.
No se, lo mismo es que hay algo que no entiendo, pero tal y como lo veo, los "if" que acompañan a los printf no tienen nada que ver con la descomposición del número en factores. Su función es componer, si procede, la salida del programa... pero el resultado, se imprima o no, ya está calculado.