This paper demonstrates the efficient solution of power calculation in C language. is of practical value. Share to everyone for your reference. The specific methods are as follows:
The topics are as follows:
Given base, the power exp of base is obtained
Only consider the basic functions, do not make any boundary conditions of the decision, you can get the following code:
#include <iostream>
using namespace std;
int cacexp (int base, int exp)
{
int result = 1;
int thebase = 1;
while (exp)
{
if (exp & 0x01) Result
= result * BASE;
Base = base * BASE;
EXP = exp >> 1;
}
return result;
}
int getrecurexp (int base, int exp)
{
if (exp = = 0)
{return
1;
}
if (exp = = 1)
{return
base;
}
int result = Getrecurexp (base, exp >> 1);
Result *= result;
IF (exp & 0x01) result
*= base;
return result;
}
int main ()
{
for (int i = 1; i < i++)
{int result
= Cacexp (2, i);
int result = Getrecurexp (2, i);
cout << "Result:" << result << Endl;
}
return 0;
}
Then look at the numerical integer method of solving the number of times:
#include <iostream> using namespace std;
BOOL Equalzero (double) {if (number < 0.000001 && number > -0.000001) return true;
else return false;
Double _mypow (double base, int exp) {if (exp = 0) return 1;
if (exp = = 1) return base;
Double result = _mypow (base, exp >> 1);
Result *= result;
IF (exp & 0x01) result *= base;
return result;
Double _mypow2 (double base, int exp) {if (exp = 0) return 1;
double result = 1;
while (exp) {if (exp & 0x01) result *= base;
Base *= Base;
EXP = exp >> 1;
return result;
Double Mypow (double base, int exp) {if (Equalzero (base)) return 0;
if (exp = = 0) return 1;
BOOL flag = FALSE;
if (exp < 0) {flag = true;
exp =-exp;
Double result = _mypow2 (base, exp);
if (flag) {result = 1/result;
return result;
} void Main () {double base = 2.0;
int exp =-5;
Double result = MYPOW (base, exp); cout << "Result:" << result << Endl
}
I believe that this article on the C program algorithm design learning has a certain reference value.