go语言中使用递归和普通方式实现斐波那契数列的函数
package main
import "fmt"
// Author tekintian@gmail.com
// 斐波纳契数列 使用递归方式计算
func fibonacci(n int) int {
if n < 2 {
return n
}
return fibonacci(n-2) + fibonacci(n-1)
}
// 斐波那契数列 使用for循环方式计算 返回数组[]int
func fibonacci2(n int) []int {
arr1 := make([]int, n)
x, y := 0, 1
for i := 0; i < n; i++ {
arr1[i] = x
x, y = y, x+y //
fmt.Printf("\nx=%v,y=%v", x, y)
}
return arr1
/*
x=1,y=1
x=1,y=2
x=2,y=3
x=3,y=5
x=5,y=8
x=8,y=13
x=13,y=21
x=21,y=34
x=34,y=55
x=55,y=89
*/
}
func main() {
var i int
for i = 0; i < 10; i++ {
fmt.Printf("%d ", fibonacci(i))
}
//0 1 1 2 3 5 8 13 21 34
fmt.Printf("\n%v\n", fibonacci2(10))
// [0 1 1 2 3 5 8 13 21 34]
}