Calcular exponente sin usar la función pow() en C++

Shikha Chaudhary 12 octubre 2023
  1. Calcular exponente sin usar la función pow() en C++
  2. Utilice el bucle for para calcular el exponente sin utilizar la función pow() en C++
  3. Utilice el bucle while para calcular el exponente sin utilizar la función pow() en C++
  4. Utilice la recursión para calcular el exponente sin utilizar la función pow() en C++
  5. Conclusión
Calcular exponente sin usar la función pow() en C++

C++, como muchos otros lenguajes de programación, C++ viene con una biblioteca integrada que contiene funciones y módulos para facilitar las tareas. La función pow() es una función integrada que nos permite calcular fácilmente la potencia de un número.

Sin embargo, puede haber una situación, como en las plataformas de codificación, en la que debe encontrar la potencia de un número sin usar ninguna función integrada. ¿Alguna idea de cómo lo harás?

En este artículo, discutiremos las diversas formas en que podemos calcular el exponente de un número sin usar la función pow().

Calcular exponente sin usar la función pow() en C++

Antes de pasar a las alternativas de usar la función pow(), primero veamos cómo funciona la función pow() en C++.

la función pow() en C++

Como su nombre lo dice, la función pow() o power calcula la potencia de un número. Esta función toma dos valores como argumentos y también requiere el uso del archivo de encabezado.

El primer valor que le pasamos en la función pow() actúa como base, y el segundo valor es el exponente al que hay que elevar la base. Aquí hay un programa que calcula el valor de 5^3 con la ayuda de la función pow().

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;
int main() {
  double b = 5.0, p = 3.0, ans;
  ans = pow(b, p);

  cout << ans;

  return 0;
}

Producción :

125

Tenga en cuenta que la función pow() toma valores dobles y no int como argumentos. Pero esto no significa que la función pow() no pueda usarse con números enteros.

Sin embargo, a veces el uso de int con la función pow() puede dar resultados absurdos en algunos compiladores. Por ejemplo, pow(4,2) podría dar como resultado 15 con algunos compiladores.

Por lo tanto, es recomendable utilizar la función pow() con tipos de datos doble.

Ahora que conoce los conceptos básicos de la función pow(), analicemos otras formas de calcular el exponente de un número sin usar la función pow() en C++.

Utilice el bucle for para calcular el exponente sin utilizar la función pow() en C++

Sabemos que al calcular el exponente de un número, usamos la multiplicación repetida. El número de veces que se repite esta multiplicación depende del exponente o de la potencia a la que se eleve la base.

Aquí hay un ejemplo de lo mismo.

5^4 = 5 * 5 * 5 * 5 = 625

También podemos aplicar este concepto en la programación usando el bucle for. Aquí está el código para el mismo.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;
int main() {
  int i, e, b, ans = 1;

  cout << "Enter the base: " << endl;
  cin >> b;

  cout << "Enter the exponent: " << endl;
  cin >> e;

  /*logic to calculate power*/

  for (i = 1; i <= e; ++i) {
    ans = ans * b;
  }

  cout << "The solution is: " << ans;

  return 0;
}

Producción :

Enter the base:
5
Enter the exponent:
4
The solution is: 625

Entonces, ¿qué está pasando en este código?

Las variables b y e se refieren a la base y exponente, respectivamente. Además, la variable ans tiene el valor 1, y la variable i define el número de veces que se ejecuta el bucle for.

Ahora comprenda que la lógica que funciona con la función pow() aquí comienza desde el bloque for en este código. Así que analicemos lo que sucede dentro del bloque for.

Puedes ver que i se inicializa a 1, y sube al valor del exponente, que aquí es 4. Además, la instrucción dentro del bucle multiplica b por ans y almacena el resultado en la variable ans misma.

Esto es lo que contiene la variable ans en cada iteración.

i=1
ans = 1*5
ans = 5

i=2
ans = 5*5
ans = 25

i=3
ans = 25*5
ans = 125

i=4
ans = 125*5
ans = 625

Y obviamente, el valor final de la variable ans se devuelve como salida cuando termina el bucle. Básicamente, así es como se puede usar el bucle for para calcular el exponente de un número sin la función pow().

Usemos ahora un bucle while para realizar lo mismo.

Utilice el bucle while para calcular el exponente sin utilizar la función pow() en C++

La idea básica detrás del uso del bucle while para calcular el exponente de un número sigue siendo la misma que la del bucle for. Lo único que cambia es el método de contar el número de repeticiones.

Mira el código que se muestra a continuación.

Aquí en el bloque while, el valor inicial de e es lo que el usuario ingresa como exponente, y con cada paso, el valor disminuye en uno. Al final, el bucle termina cuando e se reduce a 0.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;
int main() {
  int i, e, b, ans = 1;

  cout << "Enter the base: " << endl;
  cin >> b;

  cout << "Enter the exponent: " << endl;
  cin >> e;

  /*logic to calculate power*/

  while (e != 0) {
    ans = ans * b;
    --e;
  }

  cout << "The solution is: " << ans;

  return 0;
}

Producción :

Enter the base:
5
Enter the exponent:
4
The solution is: 625

Puede ver que la declaración dentro del bucle while multiplica b por ans y almacena el resultado en la variable ans misma de la misma manera que se hizo en el caso del bucle for.

Esto es lo que contiene la variable ans en cada iteración.

e = 4
ans = 1 * 5
ans = 5

e = 3
ans = 5 * 5
ans = 25

e = 2
ans = 25 * 5
ans = 125

e = 1
ans = 125 * 5
ans = 625

Así es como puedes usar el bucle while para calcular el exponente de un número sin usar la función pow().

Si además desea realizar cualquier otra operación en la salida, puede hacerlo como se muestra en el siguiente ejemplo.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;
int main() {
  int i, e, b, ans = 1;

  cout << "Enter the base: " << endl;
  cin >> b;

  cout << "Enter the exponent: " << endl;
  cin >> e;

  /*logic to calculate power*/

  while (e != 0) {
    ans = ans * b;
    --e;
  }

  /*adding 500 to the result*/

  ans = ans + 500;
  cout << "The solution after addition is: " << ans;

  return 0;
}

Producción :

Enter the base:
5
Enter the exponent:
4
The solution after addition is: 1125

Tenga en cuenta que es recomendable utilizar estos métodos para calcular el exponente cuando la base y el exponente son ints. Para valores flotantes, utilice la función pow().

La complejidad de ambos métodos es O(n), siendo n el exponente.

Hasta ahora, hemos discutido los métodos habituales de bucle para encontrar la potencia de un número. Analicemos ahora una solución recursiva muy interesante para hacer lo mismo.

Utilice la recursión para calcular el exponente sin utilizar la función pow() en C++

Mira el código que se muestra a continuación.

#include <math.h>
#include <stdio.h>

#include <iostream>

using namespace std;

int product(int a, int b) {
  if (b)
    return (a + product(a, b - 1));
  else
    return 0;
}

int calculate_power(int x, int y) {
  if (y)
    return product(x, calculate_power(x, y - 1));
  else
    return 1;
}

int main() {
  cout << calculate_power(5, 2);
  getchar();
  return 0;
}

Producción :

25

Este código utiliza dos funciones, producto para la multiplicación repetida y calcular_potencia para averiguar x^y.

Cuando se ejecuta el bloque main, el control va primero a la función calculate_power. Dentro de esta función, si el valor del exponente y es 0, el control pasa al bloque if, y la función devuelve 1.

De lo contrario, el control va al bloque if, donde la función llama a la función producto, que recursivamente llama a la función calcular_potencia. Además, dentro de la función producto, cuando el control va al bloque if, se vuelve a llamar recursivamente a la función producto.

Aquí hay una ilustración que lo ayudará a comprender mejor el funcionamiento de este código.

Coming down:                       calculate_pow(5,2)
                            product(5, calculate_pow(5,1))
                                           product(5, calculate_pow(5, 0)
                                                           return 1


Going back, Step 1:                 product(5, 1)
                                return 5 + product(5, 0)
                                              return 0
                                            return 5+0 = 5


Going back, Step 2:                 product(5, 5)
                                         5 + product(5, 4)
                                                5 + 5 + product(5, 3)
                                                       5 + 5 + 5 + product(5, 2)
                                                            5 + 5 + 5 + 5 + product(5, 1)
                                                                      5 + 5 + 5 + 5 + 5
                                                                              25

Así es como la recursividad calcula la potencia de un número, siendo la complejidad temporal O(n) donde n es el exponente.

Conclusión

En este artículo, discutimos cómo podríamos calcular el exponente de un número sin usar la función pow() en C++. Usamos bucles for y while para hacer esto y también vimos cómo podemos realizar otros cálculos una vez que obtengamos la potencia de un número.

Lo más interesante es que discutimos una solución recursiva para calcular la potencia de un número y también vimos el funcionamiento de ese código con un diagrama de flujo detallado.

Artículo relacionado - C++ Math