题解 | #求解立方根#

求解立方根

http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

package main

import (
	"fmt"
	"math"
)

func main() {
	var (
		input float64
	)
	fmt.Scan(&input)
	if input == 0 || input == 1 {
		fmt.Println(input)
		return
	}
	var (
		l    float64
		r    float64
		flag = 1.0
	)
    //负数的情况
	if input < 0 {
		flag = -1.0
	}
	input = math.Abs(float64(input))
    //考虑小于1的情况
	if input > 1 {
		l = 0
		r = input
	} else { 
		l = input
		r = 1
	}
    //二分查找
	mid := l + (r-l)/2
	for math.Abs(mid*mid*mid-input) > 0.001 {
		if mid*mid*mid > input {
			r = mid
		} else {
			l = mid
		}
		mid = l + (r-l)/2
	}
	fmt.Printf("%0.1f", mid*flag)
}

全部评论

相关推荐

11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务