其他分享
首页 > 其他分享> > 斐波拉契序列的 Go 实现

斐波拉契序列的 Go 实现

作者:互联网


本篇文章主要介绍斐波拉契序列的 Go 语言实现。

斐波拉契序列: 前面相邻两项之后构成后一项。

1. 循环迭代

package main

import "fmt"

const maxSize = 20

func fibonacci(fs *[maxSize]int) {
	fs[0] = 0
	fs[1] = 1
	for index := 2; index < maxSize; index++ {
		fs[index] = fs[index-1] + fs[index-2]
	}
}

func main() {
	var fibSequence [maxSize]int

	fibonacci(&fibSequence)
	fmt.Printf("fibonacci sequence: %v\n", fibSequence)	
}

执行结果:

fibonacci sequence: [0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181]

2. 递归调用

package main

import "fmt"

const maxSize = 20

func fibonacci_rec(n int) int {
	// Go 不支持三元表达式: https://golang.org/doc/faq#Does_Go_have_a_ternary_form 
	if n < 2 {
		if n == 0 {
			return n
		} else {
			return n
		}
	}

	return fibonacci_rec(n-1) + fibonacci_rec(n-2)
}

func main() {
	var fibSequence [maxSize]int

	for index := 0; index < maxSize; index++ {
		fibSequence[index] = fibonacci_rec(index)
	}
	fmt.Printf("fibonacci sequence: %v\n", fibSequence)
}

代码介绍:

标签:index,fs,fibSequence,int,波拉,序列,maxSize,fibonacci,Go
来源: https://www.cnblogs.com/xingzheanan/p/14674225.html