Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/10/2014, 07:25
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: Algoritmo potencia

Vuestras soluciones tienen TODAS bucles... volviendo al tema... puedes optar por la nada elegante solución de usar goto... técnicamente no es un bucle, por lo que debería funcionar:

Código C:
Ver original
  1. int main( )
  2. {
  3.   int numero = 2;
  4.   int potencia = 5;
  5.   int resultado = numero;
  6.  
  7.   salto:
  8.   if ( potencia > 1 )
  9.   {
  10.     resultado *= numero;
  11.     potencia--;
  12.     goto salto;
  13.   }
  14.  
  15.   printf("Resultado: %d\n", resultado );
  16. }

Otra opción... válida únicamente en C++ sería usar templates... esta última solución solo te vale si los valores de la base y el exponente están predefinidos en el código:

Código C++:
Ver original
  1. template <int BASE, int POTENCIA>
  2. struct Potencia
  3. {
  4.     enum { value = BASE * Potencia<BASE, POTENCIA- 1>::value };
  5. };
  6.  
  7. template <int BASE>
  8. struct Potencia<BASE, 1>
  9. {
  10.     enum { value = BASE};
  11. };
  12.  
  13. template <int BASE>
  14. struct Potencia<BASE, 0>
  15. {
  16.     enum { value = 1};
  17. };
  18.  
  19. int main( )
  20. {
  21.   std::cout << Potencia<2, 5>::value;
  22. }

Última edición por eferion; 22/10/2014 a las 07:33