Go斐波那契序列发生器

Go斐波那契序列发生器,go,Go,这是我的斐波那契发生器: package main import "fmt" func main() { for i, j := 0, 1; j < 100; i, j = i+j,i { fmt.Println(i) } } 主程序包 输入“fmt” func main(){ 对于i,j:=0,1;j

这是我的斐波那契发生器:

package main

import "fmt"

func main() {
    for i, j := 0, 1; j < 100; i, j = i+j,i {
        fmt.Println(i)
    }
}
主程序包
输入“fmt”
func main(){
对于i,j:=0,1;j<100;i,j=i+j,i{
fmt.Println(一)
}
}

它正在工作,但我不知道如何改进它,我想了解更多关于它的专家方法,谢谢…

我想你说的是提高时间复杂度(而不是代码复杂度)

您的解决方案在O(n)时间内计算斐波那契数。有趣的是,也存在一个O(logn)解

该算法非常简单:使用分治方法求矩阵A的n次方,并报告第(0,0)个元素,其中

 A = |1     1 |
     |1     0 |
递归是

 A^n = A^(n/2) * A^(n/2)
时间复杂性:

T(n) = T(n/2) + O(1) = O(logn)
如果你用一张纸来思考,你会发现证明很简单,而且是基于归纳的原理。 如果您仍然需要帮助,请参阅


注意:当然,O(logn)时间只有在你想找到第n个斐波那契数时才是真的。但是,如果您打算打印所有n个fib数字,理论上,您的时间复杂度不可能比您已有的时间复杂度更好。

这个问题似乎离题了,因为没有一个具体的、可回答的问题。这个看起来更合适。谢谢,那我就搬它。这能回答你的问题吗。