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

去游乐场 # 23 返回问题

去游乐场 # 23 返回问题

Go
一只斗牛犬 2021-07-06 13:05:21
http://tour.golang.org/#23package 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但不是927 >= 20 20
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

您预期结果的代码是


    func main(){

        fmt.Println(pow(3, 2, 10))

        fmt.Println(pow(3, 3, 20))

    }

“fmt.Println”中的所有“pow”函数被调用后,“fmt.Println”打印pows的结果


查看完整回答
反对 回复 2021-07-12
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

因为这两个调用pow(..)都在fmt.Println()被用作它的参数之前被评估过。


你所期望的将是输出


func main() {

    fmt.Println(pow(3, 2, 10))

    fmt.Println(pow(3, 3, 20))

}


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

添加回答

举报

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