Buenas,
Me gustaría consultarles algo y es lo siguiente:
He echo una calculadora en consola, y para repetir el proceso he echo una sentencia if llamando a la función dentro de su misma función, aquí el código:
#define suma(a,b) a + b
void sumando(){
cout << "Introduce el primer valor: ";
cin >> num1;
cout << "Introduce el segundo valor: ";
cin >> num2;
suman = suma(num1, num2);
cout << "El resultado de la suma es: " << suman << endl;
cout << "Si quieres seguir sumando escribe '1' (si quieres salir escribe otro numero): ";
cin >> seguir;
if(seguir == 1){
sumando();
}
else;
}
Como ven he llamado a la función sumando() dentro de su misma función, y me preguntaba si eso está bien.
No me da ningún error ni nada, me va perfectamente el programa, pero tengo esa consulta de si está bien.
Gracias, saludos.
Creo que eso se llama recursividad de las funciones, y si es totalmente valido y muy útil en ocasiones como esa.
Yo te recomendaría declarar la función como bool, y, desde el lugar donde la llamas, hacer un:
while(sumando());
Y convertir el if en:
if(seguir == 1)
return true;
else
return false;
La recursividad es útil, pero este no es un caso donde sea necesaria. La recursividad tiende a hacer códigos más sencillos, pero a la vez puede dar más problemas, como un stack overflow.
Ye digo: "Usa cada cosa en su momento."
Cita de: ivancea96 en 8 Marzo 2015, 14:57 PMYo te recomendaría declarar la función como bool, y, desde el lugar donde la llamas, hacer un:
while(sumando());
Y convertir el if en:
if(seguir == 1)
return true;
else
return false;
Ya que el resultado de los operadores relacionales es el esperado (true si se cumple la condición, falso en caso contrario) la sentencia condicional se puede eliminar quedando solo la sentencia de retorno:
return seguir == 1;
Un saludo
Gracias por sus respuestas.
Ya me voy haciendo ideas.
Saludos.