题目:给定一个数d和n,如何计算d的n次方?例如:d = 2, n = 3, d的n次方为2**3 = 8
分析:递归得方法:
(1)n = 0,那么计算结果肯定为1
(2)n = 1, 那么计算结果肯定为h
(3)n > 0,首先计算2**(n/2)的值tmp,如果n为奇数,那么计算结果result = tmp * tmp * d,如果n为偶数,那么结果为result = tmp * tmp
(4)n < 0,首先计算2**(|n/2|)的值tmp,如果n为奇数,那么计算结果result = 1/ (tmp * tmp * d),如果n为偶数,那么结果为result = 1/(tmp * tmp)。
code:
def power(d, n):
if n == 0: return 1
if n == 1: return d
tmp = power(d, abs(n)/2) + 0.0
if n > 0:
if n % 2 == 1:
return tmp * tmp * d
else:
return tmp * tmp
else:
if n % 2 == 1:
return 1 / (tmp * tmp * d)
else:
return 1 / (tmp * tmp)
if __name__ == "__main__":
x = 3
y = 6
print(power(x, y))