我已解决了之前的问题,现在我遇到了这个问题。 它要求改进我在下面发布的先前解决方案,但不能完全理解问题是什么。 (另外,无法弄清楚如何解决它。) 请帮忙 感谢。
问题: Elena抱怨项目2中的递归牛顿函数包括 估计的额外论据。该功能的用户不应该这样做 当他们调用这个函数时,提供这个值,它始终是相同的。 修改函数的定义,使其使用关键字参数 使用此参数的相应默认值,并调用该函数 没有第二个论证来证明它解决了这个问题。
这是我的代码:
def newtonSquare(x, estimate):
if abs(x-estimate ** 2) <= 0.000001:
return estimate
else:
return newtonSquare(x, (estimate + x / estimate) / 2)
def main():
num = int(raw_input('Enter a positive number >> '))
print newtonSquare(num, 1.0)
main()
答案 0 :(得分:2)
问题是投诉,当有人打电话给newtonSquare
时,他们总是这样做,初步估计为1.0。要将其设置为默认值,除非您明确提供它,否则只需将函数的定义修改为:
def newtonSquare(x, estimate = 1.0):
答案 1 :(得分:0)
Michael的默认值解决方案的替代方法是定义newtonSquare函数的局部递归函数:
def newtonSquare(x):
def f(x, estimate):
if abs(x-estimate ** 2) <= 0.000001:
return estimate
else:
return f(x, (estimate + x / estimate) / 2)
return f(x, 1.0)
def main():
num = int(raw_input('Enter a positive number >> '))
print newtonSquare(num)
main()
在这种情况下,默认值更好,更灵活,但这仍然是一个有用的模式。