/*计算x^N的时间复杂度为O(logN)的算法*/
#include <stdio.h> //C语言标准头文件
double Pow(double x, int n); //C语言函数声明
int main(int argc, char const *argv[]) //C语言主函数
{
int n = 0;
double x = 0;
/*用户交互输入提示*/
printf("Please enter a real number as x:");
scanf("%lf", &x);
printf("Please enter a positive integer as n:");
scanf("%d", &n);
/*格式化输出结果*/
printf("%lf^%d = %lf\n", x, n, Pow(x, n));
while(1) getchar(); //起到暂停命令行界面的显示结果作用,如果在集成开发环境下面运行此代码,可以删除此语句。
return 0;
}
double Pow(double x, int n) //函数的定义
{
double ret = 0; //为了保障单一出口,设置ret保存将要返回的结果
if (x != 0) //如果x不等于0,才进入此函数的主要计算步骤
{
ret = 1;
while(n > 0) //当指数n等于0时,结束循环
{
if (n % 2 == 0) //当指数n为偶数时
{
x *= x;
n /= 2;
}
else //当指数n为奇数时
{
ret *= x;
n -= 1;
}
}
}
return ret; //返回计算结果
}
###*运行程序,分别输入x和n,即得x^n的结果。