十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
最简单就是使用for循环,进行n次相乘,最终的结果就是a的n次方,望采纳
我们提供的服务有:网站建设、成都网站建设、微信公众号开发、网站优化、网站认证、大冶ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的大冶网站制作公司
如果n比较小,可以吧
result
*=
a循环n次。。
如果n比较大,
可以逐步来算。
这样考虑,f(n)
=
2^n
如果有了
f(m)的结果,
那么
f(2m)和f(2m+1)
就分别等于
f(m)*f(m)和f(m)*f(m)*a
所以可以从最高位开始查看n的每一位,
如果这一位是1,
那么
result
=
result
*
result
*
a;
如果这一位是0,那么result
=
result
*
result;
其中result
的初始值是1。
这样复杂度就是log(n)的
据我所知你的a和n必须是给出的数。,,或者是上端的输入,,你要用的话可以加一个头文件
#includemath.h
下面是调用函数
pow(a,n) 表示的就是a的n此方
#includestdio.h
double powmy(double a,int n)
{
double retVal=1;
while(n0)//配合下面的n-- 循环执行n次
{
retVal=retVal*a;//每次乘a 这样就得到a的n次幂
n--;
}
return retVal;//返回结果
}
main()
{
double b=0,jg=0;
int n=0;
printf("底数,幂次方=?");
scanf("%lf %d",b,n);//输入
jg=powmy(b,n);
printf("结果为:%lf\n",jg);//输出结果
}