玩一下 Sqrt 開方


Java 的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Test {
public float sqrt(float num) {
float guess = num / 3;
float lastGuess;

do {
lastGuess = guess;
guess = (num / guess + guess) / 2;
}while(Math.abs(lastGuess - guess) > 5e-15);

return guess;
}

public static void main(String args[]) {
float num = new Test().sqrt(10);

System.out.println(num);
}
}

Ruby 的

1
2
3
4
5
6
7
8
9
10
11
12
def sqrt(num)
guess = num / 3

begin
lastGuess = guess
guess = (num / guess + guess) / 2
end while ((lastGuess - guess).abs > 5e-15)

guess
end

p sqrt(10)

Python 的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from __future__ import division
import math

def sqrt(num):
guess = num / 3

while True:
lastGuess = guess
guess = (num / guess + guess) / 2

if math.fabs(lastGuess - guess) <= 5e-15: break

return guess

if __name__ == "__main__":
print sqrt(10)

參考