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 originalint main( )
{
int numero = 2;
int potencia = 5;
int resultado = numero;
salto:
if ( potencia > 1 )
{
resultado *= numero;
potencia--;
goto salto;
}
printf("Resultado: %d\n", resultado
); }
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 originaltemplate <int BASE, int POTENCIA>
struct Potencia
{
enum { value = BASE * Potencia<BASE, POTENCIA- 1>::value };
};
template <int BASE>
struct Potencia<BASE, 1>
{
enum { value = BASE};
};
template <int BASE>
struct Potencia<BASE, 0>
{
enum { value = 1};
};
int main( )
{
std::cout << Potencia<2, 5>::value;
}