牛顿法递推的改进

2024-10-01 07:27:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经解决了以前的一个问题,而现在我却被这个问题所困扰。 它要求改进我在下面发布的先前的解决方案,但不太明白问题的实质。(同时,也不知道如何解决它。) 请帮忙 谢谢。在

问题: Elena抱怨project2中的递归newton函数包括 估计值的额外参数。函数的用户不必 当他们调用这个函数时,提供这个值,这个值总是相同的。 修改函数的定义,使其使用关键字参数 并调用函数 没有第二个论证来证明它解决了这个问题。在

这是我的代码:

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()

Tags: 函数用户参数returnmaindef估计值newton
2条回答

对于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()

在这种情况下,使用默认值会更好、更灵活,但这仍然是一个有用的模式。在

问题是有人抱怨说,当某人调用newtonSquare时,他们总是以1.0的初始估计值来这么做。若要将其设置为默认值,除非显式提供,否则只需将函数的定义修改为:

def newtonSquare(x, estimate = 1.0):

相关问题 更多 >