Go 공식 튜 토리 얼 연습 뉴턴 교체 법 제곱 근 구하 기

1189 단어 Go
나의 해법 은 튜 토리 얼 의 내용,즉 아직 도착 하지 않 은 내용 을 바탕 으로 나의 해법 에 나타 나 지 않 을 것 이다.그리고 연습 이 라면 Go 의 특성 을 최대한 사용 하고 다른 언어 에 대한 습관 을 버 릴 것 이다.
 
연습 문제:http://tour.golang.org/#44
중국어 자료:http://blog.punkid.org/2008/02/28/compute-the-square-root-via-newtons-iteration/
 
해법:
 
package main
import fmt "fmt"
import math "math"

//        ,                   。
func guess(seed float64, value float64) float64 {
	if seed > value {
		return 1
	}
	var p float64 = 1.0
	for v:= seed; v < value; p, v = v, v*seed {}
	if p > value {
		return 1
	}
	return p
}

func newtonIterator(start float64) func(float64) float64 {
	sqr := start
	return func(value float64) float64 {
		sqr = sqr - ((sqr*sqr - value)/(2*sqr))
		return sqr
	}
}

func main() {
	var value float64 = 101
	sqr_2 := math.Sqrt(value)
	start := guess(2, value)
	f := newtonIterator(start)
	for i := 0; i < 100; i++ {
		fmt.Println(f(value) ,":", sqr_2)
	}
}

 
감개:뉴턴 은 너무 NB 야!

좋은 웹페이지 즐겨찾기