牛顿在python中寻找平方根的方法

时间:2013-12-28 05:04:04

标签: python

这是一个使用牛顿方法求解给定数字的平方根的函数:

def sqrt(n):
    approx = n / 2.0
    while True:
        better = (approx + n / approx) / 2.0
        if abs(approx - better) < 0.00001:
            return better
        approx = better

我不明白的是,该函数只返回“better”,这是一个整数,但while循环依赖于一个布尔值,那么while循环如何停止?函数返回False以终止while循环?

非常感谢提前。

4 个答案:

答案 0 :(得分:4)

实际上,它永远不会“返回False来终止while循环”,因为它根本不需要。

当Python在函数内部命中return-statement时,它会立即退出该函数。意思是,当达到return better时,退出sqrt,并且在此过程中,while循环也是如此。

答案 1 :(得分:2)

你提到的布尔值True是循环重复的条件。在此代码中,循环始终重复,因为循环条件始终为True。循环条件不依赖于返回值。当达到return语句时,即使return语句在循环或if语句中,函数也会立即停止并返回该值。

答案 2 :(得分:0)

  

那么while循环怎么会停止?

当函数返回时它将停止。函数return将控件传递给调用者,从而不由自主地断开并终止循环。

  

函数返回False以终止while循环?

它不需要。假设,该函数计算非负实数的平方根,保证函数返回。从而产生循环终止

  

但是while循环依赖于布尔

示例循环是无限循环的典型示例。无限循环保证永远运行,直到外部场景强制退出循环。明确的条件可以是

  1. 显式中断声明
  2. 功能返回
  3. 任何隐式场景,如中断,信号或异常。​​

答案 3 :(得分:0)

当python在函数中“返回...”时,无论你有多少循环,函数都会停止,返回值,并继续使用其余的代码。

  

函数返回False以终止while循环?

如果你真的想在没有“退出”函数的情况下终止while循环,你可以使用语句break

def bla():
    a = 1;
    while True:
        ...
        ...
        if blichlach = 18273182736127836:
            break
        ...
    a = 2

这个简单的函数,将1分配给a,然后进入无限循环,因为True将永远为真。 然后,当blichlach命中18273182736127836时,循环将停止 - 然后函数将在'while'之后继续,这意味着它将2分配给'a'。

def bla():
    a = 1;
    while True:
        ...
        ...
        if blichlach = 18273182736127836:
            return 1;
        ...
    a = 2

在这一个中,当blichlach在while循环中命中18273182736127836时,该函数将返回主代码或调用它的函数。 'a'永远不会是2。