go语言编写斐波那契前50项,运用递归,显示程序运行时间
时间: 2024-10-21 14:12:09 浏览: 23
Go语言中,你可以通过递归函数来编写斐波那契数列前50项。首先,需要定义一个递归函数`fib`来计算第n项的斐波那契值,然后使用循环打印出前50项并记录运行时间。以下是一个简单的示例:
```go
package main
import (
"fmt"
"time"
)
// 斐波那契递归函数
func fib(n int) (int, error) {
if n <= 1 {
return n, nil
}
return fib(n-1) + fib(n-2), nil
}
func main() {
start := time.Now()
fibonacciList := make([]int, 50)
for i := 0; i < 50; i++ {
nthFib, err := fib(i)
if err != nil {
fmt.Println("Error calculating Fibonacci:", err)
break
}
fibonacciList[i] = nthFib
}
end := time.Now()
// 输出结果和运行时间
fmt.Println(fibonacciList)
fmt.Printf("\nExecution time: %v\n", end.Sub(start))
}
```
在这个代码中,我们首先测量了开始时间,接着生成前50项斐波那契数并存储在数组中,最后输出结果并计算运行时间。
相关问题
go语言递归编写斐波那契前50项,能够输出前50项且运行时间递归
在Go语言中,递归是一种常见的算法实现方式,特别是在处理像斐波那契数列这样的分治问题时。斐波那契数列是指每个数字等于它前面两个数字之和,通常开始的两项为0和1。以下是使用递归来计算并打印前50项斐波那契数列的例子:
```go
package main
import "fmt"
// 斐波那契函数,递归实现
func fibonacci(n int) int {
if n <= 1 {
return n
}
return fibonacci(n-1) + fibonacci(n-2)
}
func main() {
// 使用循环控制打印前50项,避免无限递归
for i := 0; i < 50; i++ {
fmt.Printf("fibonacci(%d): %d\n", i, fibonacci(i))
}
}
```
注意,虽然递归简洁直观,但是由于递归会频繁地重复计算相同的值,对于较大的`n`(如50),这个实现可能会非常慢并且内存开销大。实际上,上面的代码不适合用于计算大量斐波那契数,因为它的时间复杂度是指数级的O(2^n)。
阅读全文