本帖最后由 sbwfnhn 于 2023-7-6 17:11 编辑
代码如下
[Golang] 纯文本查看 复制代码 package main
import (
"fmt"
"time"
)
var countSum int
func main() {
result := 0
start := time.Now()
for i := 1; i <= 40; i++ {
result = fibonacci(i)
fmt.Printf("数列第 %d 位: %d, 递归次数%d\n", i, result, countSum)
countSum = 0
}
end := time.Now()
delta := end.Sub(start)
fmt.Printf("程序的执行时间为: %s\n", delta)
}
func fibonacci(n int) (res int) {
if n <= 2 {
res = 1
} else {
res = fibonacci(n-1) + fibonacci(n-2)
}
countSum++ //非常耗性能,会不停的递归自己,这里是统计下递归了几次,数字越大,递归次数越大
return
}
在命令行是正常的,但是在goland中,发现每次结果都不一样,(第一次运行正确,连续run多次会出现,但是debug正常),总会丢失几行打印,这是什么情况。
[Golang] 纯文本查看 复制代码 数列第 1 位: 1, 递归次数1
数列第 2 位: 1, 递归次数1
数列第 3 位: 2, 递归次数3
数列第 4 位: 3, 递归次数5
数列第 5 位: 5, 递归次数9
数列第 6 位: 8, 递归次数15
数列第 18 位: 2584, 递归次数5167
数列第 19 位: 4181, 递归次数8361
数列第 20 位: 6765, 递归次数13529
数列第 21 位: 10946, 递归次数21891
数列第 22 位: 17711, 递归次数35421
数列第 23 位: 28657, 递归次数57313
数列第 24 位: 46368, 递归次数92735
数列第 25 位: 75025, 递归次数150049
数列第 26 位: 121393, 递归次数242785
数列第 27 位: 196418, 递归次数392835
数列第 28 位: 317811, 递归次数635621
数列第 29 位: 514229, 递归次数1028457
数列第 30 位: 832040, 递归次数1664079
数列第 31 位: 1346269, 递归次数2692537
数列第 32 位: 2178309, 递归次数4356617
数列第 33 位: 3524578, 递归次数7049155
数列第 34 位: 5702887, 递归次数11405773
数列第 35 位: 9227465, 递归次数18454929
数列第 36 位: 14930352, 递归次数29860703
数列第 37 位: 24157817, 递归次数48315633
数列第 38 位: 39088169, 递归次数78176337
数列第 39 位: 63245986, 递归次数126491971
数列第 40 位: 102334155, 递归次数204668309
程序的执行时间为: 942.111ms次数1664079
|