所以,我在Python中学习了这个等分搜索算法,并应用它来寻找一个数的平方根。至于算法,尽管有其局限性,但我在JavaScript中经常做的一件事是将条件封装在变量中,以便更易于阅读,例如:
var isGreaterThanFive = num > 5;
if(isGreaterThanFive && otherConditions...)
虽然在JavaScript中这样做非常好,但在Python中尝试这样做时,我的程序似乎进入了一个无限循环。这是我的JavaScript代码:
function sqrtOf (x) {
var min = 0
var max = x
var epsylon = 0.001
var guess = (max + min) / 2
var guessNumber = 0;
//I created these two so it is easier to understand
var notCloseEnough = Math.abs(Math.pow(guess, 2) - x) >= epsylon;
var stillPlausible = guess <= x;
while (notCloseEnough && stillPlausible) {
guessNumber += 1
if(Math.abs(Math.pow(guess, 2)) > x) {
max = guess;
} else {
min = guess;
}
guess = (max + min) / 2;
}
return guess;
}
console.log(sqrtOf(25)); // 5
现在在Python中:
def sqrtOf (x)
minVal = 0
maxVal = x
epsylon = 0.001
guess = (maxVal + minVal) / 2.0
guessNumber = 0;
notCloseEnough = abs(guess ** 2 - x) >= epsylon
stillPlausible = guess <= x
while notCloseEnough and stillPlausible:
guessNumber += 1
if abs(guess ** 2) > x:
maxVal = guess
else:
minVal = guess
guess = (maxVal + minVal) / 2.0
return guess
print sqrtOf(25)
当你写信的时候
您计算了语句
abs(guess ** 2 - x) >= epsylon
,并将其结果赋给notCloseEnough
。不会再次进行该计算,因为您稍后在代码中碰巧引用了它的结果。你知道吗如果你想重新评估事物,你需要一个函数对象。可以定义对外部函数的局部变量具有可见性的内部函数。你知道吗
这也很好,
stillPlausible
让我困惑。输入应该在循环之前得到验证。你知道吗相关问题 更多 >
编程相关推荐