数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
package main import ( "errors" "fmt" "io" ) func main() { var n, m int var num int var err error num, err = fmt.Scanln(&n, &m) for num != 0 && err != errors.New(io.EOF.Error()) { sum := 0.0 var tmp float64 = float64(n) //求tmp平方根 for i := 0; i < m; i++ { sum += tmp tmp = mySqrt(tmp) if tmp < 0.0001 { goto next //精度要求哦i } } fmt.Printf("%.2f\n", sum) next: num, err = fmt.Scanln(&n, &m) } } //牛顿迭代法 f(x)=x*x - C 求零点 func mySqrt(x float64) float64 { y, check := 1.0, 0.0 fx := float64(x) y = (fx/y + y) / 2.0 check = y*y - fx for check > 0.001 { y = (fx/y + y) / 2.0 check = y*y - fx } return y }