因此,我尝试跟随 Python 中的 SICP 讲座,并为寻找平方根近似值的牛顿方法构建了简单的黑盒模型。
代码本身似乎工作正常,但我的函数一直返回 None?在下面的 tryfor 函数中,我已经使它既打印近似值又返回它,这样父函数就可以返回近似值。
我从 print 函数中知道我的代码可以找到正确的答案。但是,当我编写 print(NewtonSqrt(2)) 时,返回 None - 我的近似值没有被“返回” 对为什么会发生这种情况感到困惑。
def NewtonSqrt(x):
def improve(guess):
return (guess + (x/guess)) / 2
def goodenough(guess):
if abs(guess - (x/guess)) < 0.00001:
return True
def tryfor(guess):
if goodenough(guess) == True:
print(guess)
return guess
else:
tryfor(improve(guess))
return tryfor(1)
print(NewtonSqrt(2))