数值的整数次方(算法11)
文章目录
问题:实现一个求数值的整数次方函数。求base(double type)的exponent(int type)次方。
原理和讨论:
如果使用Python,哈哈哈,直接了当:
1 | def power(base, exponent): |
这里**
运算符触发数值对象(int,float)的__pow__
方法。
考虑边界值:
(1)base为零的情况。
由于0的0次方数学上没有意义,Python默认返回0。
(2)base为负数的情况。
base为负数数学上是可以的。所以上面的函数依然可以返回正确值。
出于实用性,函数修改如下
1 | class BaseZeroError(Exception): |
但这个实现还是使用了Python内置的计算。下面使用三种思路实现power。
实现
思路一:
(1)只考虑exponent为正数的情况
(2)不考虑base为0的情况。
1 | def power(base, exponent): |
思路二:
更高效的递归方法
1 | def pow(x, n): |