go语言递归编写斐波那契前50项,能够输出前50项且运行时间递归
时间: 2024-10-21 14:05:23 浏览: 30
在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)。
相关问题
go语言用递归编写斐波那契前50项,能够输出前50项且能输出程序运行时间
Go语言中可以使用递归来编写斐波那契数列,这是一种经典的递归算法例子。以下是编写一个函数来计算并打印前50项斐波那契数列及其运行时间的示例:
```go
package main
import (
"fmt"
"time"
)
// 使用递归实现斐波那契数列
func fibonacci(n int) (int, error) {
if n <= 0 {
return 0, fmt.Errorf("输入值n必须大于0")
}
if n == 1 || n == 2 {
return n, nil
}
prev, curr := 0, 1
for i := 3; i <= n; i++ {
prev, curr = curr, prev+curr
}
return curr, nil
}
func main() {
startTime := time.Now()
fibList := make([]int, 50)
for i := 0; i < 50; i++ {
fib, err := fibonacci(i + 1)
if err != nil {
fmt.Println(err)
break
}
fibList[i] = fib
}
duration := time.Since(startTime)
fmt.Printf("斐波那契数列前50项:\n%v\n", fibList)
fmt.Printf("程序运行时间: %v\n", duration)
}
```
在这个程序中,`fibonacci` 函数负责计算第n个斐波那契数字。在`main`函数中,我们首先记录开始时间,然后循环计算前50项,并将结果存储在`fibList`数组中。最后,我们会输出计算出的斐波那契数列以及程序的运行时间。
go语言编写斐波那契前50项,运用递归,显示程序运行时间
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项斐波那契数并存储在数组中,最后输出结果并计算运行时间。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)