用二分法设计求出a的N次幂

来源:百度知道 编辑:UC知道 时间:2024/05/31 14:49:01
教大哥级别任务帮忙,要交的,算法科目的题,要程序,C语言的

#include <stdio.h>

double Pow(double a, int n)
{
double p;

if (n < 0)
return 0;
else if (n == 0)
return 1.0;
else
{
p = Pow(a, n/2);

p *= p;

if (n%2)
p *= a;

return p;
}
}

int main()
{
double a;
int n;

printf("A = ");
scanf("%lf", &a);
printf("\nN = ");
scanf("%d", &n);

printf("\n%lf^%d = %lf\n", a, n, Pow(a, n));

return 0;
}

#include <stdio.h>
#include <stdlib.h>

double pow(double a,int N)
{
double ans = 1;
int i;
for(i = 30;i >= 0 && !(N & (1 << i));i--);
for(;i >= 0;i--)
{
ans *= ans;
if(N & (1 << i))
ans *= a;
}
return ans;
}

int main()
{
int N