hooyes 灵感纵容非凡

Go 输出斐波那契数列

2020-01-02
hooyes

关于斐波那契数列的定义,我在之前写过的一篇《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

这才符合我的预期,一个从0开始的斐波那契数列。

https://hooyes.net/p/go-fibonacci
https://hooyes.net/p/go-fibonacci

More

上一篇 幸存者的偏见

Content
Advertisement
TOP