hooyes

Go 输出斐波那契数列

|2020-01-02

请尊重原创,本文原文地址:https://hooyes.net/p/go-fibonacci

关于斐波那契数列的定义,我在之前写过的一篇《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
$ welcome to hooyes.net
[INFO] ------------------------------o-
[INFO] Author : HOOYES
[INFO] Site : https://hooyes.net
[INFO] Page : https://hooyes.net/p/go-fibonacci
[INFO] Last build : 2020-05-29 08:57:29 +0000
[INFO] -0------------------------------
原文地址:https://hooyes.net/p/go-fibonacci
原文地址:https://hooyes.net/p/go-fibonacci

...

上一篇 幸存者的偏见

Content
...
TOP