Time complexity 求给定n的Fibonacci指数的时间复杂度

Time complexity 求给定n的Fibonacci指数的时间复杂度,time-complexity,fibonacci,Time Complexity,Fibonacci,这对我来说有点难以描述,但我很想知道如何计算迭代Fib(n)次的时间复杂度 我有下面的一段代码,它将遍历斐波那契数,并从给定的输入中减去该值。循环将运行n次,其中n是Fib(n)>input 代码的时间复杂度显然是Fib(n),但是如何用Big-O表示法来表示呢 我读过这篇文章,如果我理解正确的话,它说时间复杂度是O(n log phi)或者大约O(1.618n)。那么O(n) 但这感觉不对 我还发现了(斐波那契公式)的另一个资源[这一个似乎说它实际上是: i≈ log(N)+(log(5)/2

这对我来说有点难以描述,但我很想知道如何计算迭代
Fib(n)
次的时间复杂度

我有下面的一段代码,它将遍历斐波那契数,并从给定的输入中减去该值。循环将运行n次,其中n是
Fib(n)>input

代码的时间复杂度显然是
Fib(n)
,但是如何用Big-O表示法来表示呢

我读过这篇文章,如果我理解正确的话,它说时间复杂度是
O(n log phi)
或者大约
O(1.618n)
。那么
O(n)

但这感觉不对

我还发现了(斐波那契公式)的另一个资源[这一个似乎说它实际上是:

i≈ log(N)+(log(5)/2)/log(Phi)

以上这些感觉更有意义

 public int findTheMaximumUsingALoop(int input) {
    if (input == 1 || input == 2) {
      return input;
    }

    int count = 2;

    int next = 1;
    int previous = 1;

    input -= next + previous;

    // loop until the next Fib number is more than we have left
    while (input > 0) {
      int tmp = previous;
      previous = next;
      next = next + tmp;

      input -= next;
      if (input >= 0) {
        count++;
      }
    }

    return count;
  }

数学交换链接讨论的是log(Fib(n))的渐近行为,而不是Fib(n),因此不相关

迭代Fib(n)次是指数运行时间。您可以通过查看第n个Fibonacci数的封闭式公式来了解这一点:(调用)

它的增长类似于O(phi^n),其中phi是
(1+sqrt(5))/2,约为1.618


但是,您问题中的循环不会迭代O(Fibo(n))次。它将迭代O(n)次。它有通过迭代计算第n个fibonacci数的运行时间。

数学交换链接讨论的是log(Fib(n))而不是Fib(n)的渐近行为,因此不相关

迭代Fib(n)次是指数运行时间。您可以通过查看第n个Fibonacci数的封闭式公式来了解这一点:(调用)

它的增长类似于O(phi^n)
,其中phi是
(1+sqrt(5))/2,约为1.618


但是,您问题中的循环不会迭代O(Fibo(n))次。它将迭代O(n)次。它的运行时间是通过迭代计算第n个fibonacci数。

感谢您的解释。思考您所写的内容使我意识到,我的问题相当于问计算Fib(n)的复杂性是的。这另一个stackexchange帖子也帮了我谢谢你的解释。想想你写的东西,我意识到我的问题相当于问计算Fib(n)的复杂性。这另一个stackexchange帖子也帮了我的忙