擅长:python、mysql、java
<p>这也很好,<code>stillPlausible</code>让我困惑。输入应该在循环之前得到验证。你知道吗</p>
<pre><code>def sqrtOf(x):
minVal = 0
maxVal = x
epsylon = 0.001
guess = (maxVal + minVal) / 2.0
guessNumber = 0;
def trytrytry():
while True:
yield (abs(guess ** 2 - x) < epsylon, guess - x < epsylon)
for (closeEnough, stillPlausible) in trytrytry():
if closeEnough or not stillPlausible:
break
guessNumber += 1
if abs(guess ** 2) > x:
maxVal = guess
else:
minVal = guess
guess = (maxVal + minVal) / 2.0
return guess
print sqrtOf(25)
</code></pre>