【发布时间】:2020-07-17 13:02:50
【问题描述】:
我写了两个递归函数(只是为了理解递归)来计算一个数字的负指数。第一个效果很好,但第二个在某些情况下会产生奇怪的结果。例如- power_recur(3,-1) 产生 .33 是正确的,但 power_recur(3,-2) 它产生 1。
此外,对于 power_recur2(3,-2),如果我将 return 1/v 更改为仅返回 v,它会返回 9。但是当将其更改回 return 1/v 时,它会返回 1 而不是返回 1/9。我知道我可以只使用第一个函数来完成这项工作,但我想知道为什么第二个函数 (power_recur2) 不起作用?
这行得通:
def power_recur(x, exp):
if exp < 0:
exp = abs(exp)
if exp == 0:
z = 1
else:
z = x * power_recur(x, exp-1)
return 1/z
if exp == 0:
return 1
else:
return x * power_recur(x, exp-1)
这不起作用:(为 power_recur2(3,-2) 生成 1)
def power_recur2(x, exp):
if exp < 0:
if exp == 0:
v = 1
else:
v = x * power_recur2(x, exp+1)
return 1/v
if exp == 0:
return 1
else:
return x * power_recur2(x, exp-1)
【问题讨论】: