关于斐波那契数列的定义,我在之前写过的一篇《Javascript 输出斐波那契数列》中已详细描述过了,这里不再多说了。现在这里写的是Go语言输出斐波那契数列。
Golang官网已有给出斐波那契数列的例子,为什么我还要写一个呢?那么我们先看看官网的例子有什么问题吧。
官网例子
package main
import "fmt"
func fib() func() int {
a, b := 0, 1
return func() int {
a, b = b, a+b
return a
}
}
func main() {
f := fib()
fmt.Println(f(), f(), f(), f(), f())
}
运行输出的结果是 (在线运行点这里)
1 1 2 3 5
发现了吗?输出的第一个数是 1 而不是 0,严格来说斐波那契数列应该从0开始,而不是从1开始。所以我写一个从0开始的。
我的版本
package main
import "fmt"
func fib() func(int) int {
a, b := 0, 1
return func(i int) int {
if i > 0 {
a, b = b, a+b
}
return a
}
}
func main() {
f := fib()
for i := 0; i < 6; i++ {
fmt.Println(f(i))
}
}
运行输出的结果是 (在线运行点这里)
0 1 1 2 3 5
本文原文地址为:
https://hooyes.net/p/go-fibonacci