python中幂运算运算符,函数幂的运算
【标题】实现函数doublepower (doublebase,int exponent),求底数的指数幂,不考虑溢出。
[路斯]这个问题的核心太简单了。一个周期就能搞定,我就不多说了。关键是要考虑代码的健壮性:(1)首先,base=0,exponent=0在数学上是没有意义的;当基数=0且指数为0时,分母为零。我们应该把它当作一个特例。(2)如果指数为负,那么首先要求对应正数的幂,然后取倒数。
这样,我们可以得到下面的代码:
1 #包括
2 #包括
3使用命名空间std
四
5 bool InvalidInput=false
6 double PowerWithExponentUnsigned(双基数,无符号整数指数无符号);
七
8/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
11双幂(双基数,整数指数)
12 {
13 InvalidInput=false
14
15 //底数等于0,指数小于等于0,无效输入16 if(底数==0.0指数=0)
17 {
18 InvalidInput=true
19返回0.0;
20 }
21
2//将所有指数转换为正数计算23 unsigned int指数unsigned=static _ cast(指数);
24 if(指数0)
25 {
26指数无符号=static _ cast(-指数);
27 }
28
29 //计算正指数时的结果是30 double result=powerwithexponent unsigned(base,指数unsigned);
31
2//如果指数为负,求33的倒数If(指数为0)
34结果=1.0/结果;
35
36返回结果;
37 }
38
39
40/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
43 double PowerWithExponentUnsigned(双基数,无符号整数指数无符号)
44 {
45双结果=1.0;
46 for(无符号int I=1;i=指数无符号;我)
47 {
48结果*=基数;
49 }
50返回结果;
51 }
五十二个
53
54 int main()
55 {
56 cout 请输入您的基数和指数:
57双低音=0.0;
58 int expont=0;
59 cinbasexpont
60
61 cout 结果是:
62 cout
63
64返回0;
65 }
运行结果如下:
以上算法考虑情况比较全面,但还有一点需要改进。我们的子函数需要指数乘法。事实上,对于幂的算法,我们有以下公式:
从上面的公式可以看出,它只需要logn次乘法,这是一个简单的递归公式,所以我们可以对子函数进行如下改进:
/************************************************************************
*如果指数为正,则计算底数的指数无符号幂。
************************************************************************/
double PowerWithExponentUnsigned(双基数,无符号整数指数无符号)
{
//最小的子问题if(指数无符号==0)
返回1;
double result=PowerWithExponentUnsigned(base,指数无符号/2);
结果=结果*结果;
if(指数无符号% 2==1)
{
结果*=基数;
}
返回结果;
}
你只需要第一次替换源代码中的子函数就可以测试了。笔者的测试结果如下:
参考资料:
注意:
1)本博客所有代码环境编译都是win7 VC6。所有代码都经过博主调试。
2)博主python27享有这篇博文的版权。网上转载请注明出处来自http://www.cnblogs.com/python27/.如果你有什么解决问题的建议,请在评论里告诉我。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。