用Go语言写一个函数,生成一个斐波那契数列
时间: 2023-01-11 12:55:36 浏览: 53
好的,这是一个生成斐波那契数列的 Go 语言函数的示例:
```
func Fibonacci(n int) []int {
fibList := make([]int, n)
fibList[0], fibList[1] = 1, 1
for i := 2; i < n; i++ {
fibList[i] = fibList[i-1] + fibList[i-2]
}
return fibList
}
```
使用方法:
```
fibList := Fibonacci(10)
fmt.Println(fibList) // 输出: [1 1 2 3 5 8 13 21 34 55]
```
斐波那契数列的通项公式为:
F(n) = F(n-1) + F(n-2)
其中,F(0)=1,F(1)=1。
上面的代码实现了这个通项公式,并通过循环生成了一个包含 n 个数的斐波那契数列。
相关问题
go 写个斐波那契数列
### 回答1:
好的,下面是一个常规实现斐波那契数列的代码:
```go
package main
import "fmt"
func main() {
n := 10
for i := 0; i < n; i++ {
fmt.Printf("%d ", fibonacci(i))
}
}
// fibonacci 函数返回第 n 个斐波那契数列的值。
func fibonacci(n int) int {
if n < 2 {
return n
}
return fibonacci(n-1) + fibonacci(n-2)
}
```
这个程序将输出前10个斐波那契数列的值:0 1 1 2 3 5 8 13 21 34。
需要注意的是,这个实现是递归的方式计算斐波那契数列,效率较低。在实际应用中,可以使用迭代的方式实现,效率会更高。
### 回答2:
斐波那契数列是一个经典的数学问题,它是从0和1开始,后续的每个数字都是前两个数字之和。那么我们可以写一个函数来生成斐波那契数列。
首先,我们需要定义一个函数fibonacci,它接受一个整数n作为参数,用于确定生成斐波那契数列的长度。然后,我们定义两个变量a和b,分别初始化为0和1,用于保存当前生成的数列的前两个数字。
接下来,我们需要使用一个for循环来生成数列中的每个数字。循环从2开始,因为前两个数字已经确定了。在每次循环中,我们通过将a和b相加得到下一个数字,并将结果保存在一个临时变量temp中。然后,我们更新a和b的值,将b赋给a,将temp赋给b,这样就更新了前两个数字,为下一次循环做准备。
最后,我们将生成的数列返回。下面是完整的代码示例:
```python
def fibonacci(n):
result = []
a, b = 0, 1
for _ in range(n):
result.append(a)
a, b = b, a + b
return result
n = int(input("请输入斐波那契数列的长度: "))
fib = fibonacci(n)
print(fib)
```
例如,如果输入的n为5,则生成的斐波那契数列将是[0, 1, 1, 2, 3]。
### 回答3:
斐波那契数列是指从第三项开始,每一项都是前两项的和。斐波那契数列的前几项为:0、1、1、2、3、5、8、13、21、34、55...即第一项为0,第二项为1,后续的每一项都是前两项的和。
以下是用go语言写的斐波那契数列的代码:
```go
package main
import "fmt"
func fibonacci(n int) []int {
fib := make([]int, n) // 创建一个长度为n的数组
fib[0], fib[1] = 0, 1 // 设置数列的前两项
for i := 2; i < n; i++ {
fib[i] = fib[i-1] + fib[i-2] // 计算当前项的值
}
return fib
}
func main() {
n := 10 // 斐波那契数列的长度
fib := fibonacci(n)
fmt.Println(fib)
}
```
该代码中定义了一个函数fibonacci,该函数接收一个整数n作为参数,返回一个长度为n的斐波那契数列。主函数中调用fibonacci函数,并打印出生成的斐波那契数列。运行该程序,将会输出长度为10的斐波那契数列:[0 1 1 2 3 5 8 13 21 34]。
go语言利用闭包实现斐波那契数列,输出前十个数
Go语言通过闭包(Closure)可以轻松地实现递归计算斐波那契数列。闭包是一种函数特性,它可以在外部函数返回的内部函数中保留并访问其局部变量。下面是一个简单的例子,展示了如何使用闭包来生成斐波那契数列:
```go
package main
func fibonacci(n int) func() int {
a, b := 0, 1
return func() int {
if n <= 0 {
return 0
} else if n == 1 {
return a
}
fib := a + b
a, b = b, fib
n--
return fib
}
}
func main() {
for i := 0; i < 10; i++ {
fmt.Printf("第 %d 个斐波那契数是: %d\n", i+1, fibonacci(i)())
}
}
```
在这个代码里,`fibonacci` 函数接受一个整数 `n`,然后返回一个新的匿名函数,这个匿名函数在每次调用时都会递减 `n` 并计算下一个斐波那契数值。在 `main` 函数中,我们循环调用这个闭包,打印出前十个斐波那契数字。
阅读全文