为了账号安全,请及时绑定邮箱和手机立即绑定

Go 之旅 #23:返回的奇怪行为

Go 之旅 #23:返回的奇怪行为

Go
幕布斯7119047 2021-07-01 13:00:40
围棋之旅#23:package mainimport (    "fmt"    "math")func pow(x, n, lim float64) float64 {    if v := math.Pow(x, n); v < lim {        return v    } else {        fmt.Printf("%g >= %g\n", v, lim)    }    // can't use v here, though    return lim}func main() {    fmt.Println(        pow(3, 2, 10),        pow(3, 3, 20),    )}结果是:27 >= 209 20如果我注释掉该return v行,结果是:27 >= 2010 20为什么会发生这种情况?为什么第一次pow()调用的结果不等于27 >= 20和10?
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

您向第一次调用传递了 10 的限制,因此返回的数字是 10 而不是 20。


将其更改为


func main() {

    fmt.Println(

        pow(3, 2, 20),

        pow(3, 3, 20),

    )

}

删除该return v行时,您将看到以下输出:


27 >= 20

20 20


查看完整回答
反对 回复 2021-07-05
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信