В качестве упражнения интерактивная документация по языку программирования Go, о которой я говорил вчера, предлагает посчитать квадратный корень по формуле Ньютона.

А после подсчета в лоб, используя фиксированное количество итераций, нужно было оптимизировать приложение так, чтобы использовалось только нужно количество попыток с определенным допуском.
Красивая задачка, чтобы разобраться с синтаксисом и наступить на пару классических грабель Go.
Вот какой красивый код получился:
package main
import (
"fmt"
)
func Sqrt(x float64) float64 {
z := 1.0
check := 0.0
for i:=0; i <= 100; i++ {
z = z - (z*z - x)/(2*z)
fmt.Println("Попытка", i, "Квадратный корень =", z)
if i != 0 {
if check - z < 0.00000001 {
fmt.Println("Это значение довольно точное!")
break
}
}
check = z
}
return z
}
func main() {
fmt.Println("Квадратный корень по Ньютону:", Sqrt(5645))
}
А вот результат выполнения:
Попытка 0 Квадратный корень = 2823 Попытка 1 Квадратный корень = 1412.4998228834572 Попытка 2 Квадратный корень = 708.2481417807868 Попытка 3 Квадратный корень = 358.1092560726704 Попытка 4 Квадратный корень = 186.9363008837615 Попытка 5 Квадратный корень = 108.56687651411139 Попытка 6 Квадратный корень = 80.28123878909122 Попытка 7 Квадратный корень = 75.29827319476982 Попытка 8 Квадратный корень = 75.13339593357443 Попытка 9 Квадратный корень = 75.13321502526514 Попытка 10 Квадратный корень = 75.13321502504735 Это значение довольно точное! Квадратный корень по Ньютону: 75.13321502504735
Серьезный шаг вперед, первая программа написана и работает.
А что особенно мне нравится в Go, так это его поддержка кириллицы. Никаких тебе кракозябр в выводе. Все языки должны быть такими.
