Go 斐波那契闭包

来源:互联网 发布:伦纳德官方体测数据 编辑:程序博客网 时间:2024/06/03 21:57

    斐波那契数列,从第三个数字开始,每个数字都是前两个数字的和。

    所以,我们需要在fibonacci函数中定义三个变量x1,x2,sum。

    而返回值使用闭包的方式,每次求和,扔掉x1的值,把x2的值赋值给x1,把sum的值赋值给x2,达到保存最新的斐波那契数字的目的。

   sum就是最终返回并打印的斐波那契数列的一个一个的值。

package mainimport "fmt"// fibonacci 函数会返回一个返回 int 的函数。func fibonacci() func() int {    x1, x2 := 0, 1    sum := 0    return func() int {        sum = x1 + x2        x1 = x2        x2 = sum        return sum    }}func main() {    f := fibonacci()    for i := 0; i < 10; i++ {        fmt.Print(f(),", ")    }    fmt.Println("...")}
    此例,因为斐波那契数字自身就具备循环的所有变量,因此,在打印语句中调用fibonacci()函数对应变量时无需给出输入参数。


运行结果

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华生洗衣机 华生电炒锅 华生茶吧机 华生消毒柜 华生是谁 华生心理学家 华生5108到底什么价格 华生空气净化器多少钱一台 华生臭名昭著的实验 华生吸油烟机价格大全 华生吸油烟机 华生洗衣机怎么样 华生热水器报价表 华生电器网上商城 不死冥轮 叫我华生 华电 华电集团 华电国际 华电能源 华电重工 中国华电 华电教务 华电教务处 数字华电 华电保定 华电考研网 华电电科院 华电mba学费 页岩气 华电 华电集团电子商务平台 中国华电集团电子商务平台 中国华电集团公司 中国华电集团 中国华电国际电子商务平台 华电国际电子商务平台 华电电子商务平台 华电国际股票 600027华电国际 600726华电能源 华电能源股票 华电教务保定