美文网首页
GO 使用闭包实现菲波那切数列

GO 使用闭包实现菲波那切数列

作者: R_X | 来源:发表于2018-06-14 15:22 被阅读0次
    fmt.Println(fibonacci2(10))
    
    func fibonacci2(n int) int {
        if n == 0 {
            return 0
        } else {
            var res int
            ff := func() func() int {
                back1, back2 := 1, 1 // 预先定义好前两个值
                return func() int {
                    //记录(back1)的值
                    temp := back1
                    // 重新赋值(这个就是核心代码)
                    back1, back2 = back2, (back1 + back2)
                    //返回temp
                    return temp
                }
            }()
            for i := 1; i <= n+1; i++ {
                if i == n+1 {
                    res = ff()
                } else {
                    ff()
                }
            }
            return res
        }
    }
    

    相关文章

      网友评论

          本文标题:GO 使用闭包实现菲波那切数列

          本文链接:https://www.haomeiwen.com/subject/gleyeftx.html