Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java fib递归的大O表示法_Java_Algorithm_Big O_Fibonacci - Fatal编程技术网

Java fib递归的大O表示法

Java fib递归的大O表示法,java,algorithm,big-o,fibonacci,Java,Algorithm,Big O,Fibonacci,以下函数的Big-O运行时是什么?解释一下 static int fib(int n){ if (n <= 2) return 1; else return fib(n-1) + fib(n-2) } 静态整数fib(整数n){ 如果(n证明 将计算Fib(n)的时间函数建模为计算Fib(n-1)的时间加上计算Fib(n-2)的时间加上将它们相加的时间(O(1)) T(n证明 将计算Fib(n)的时间函数建模为计算Fib(n-1)的时间加上计算Fib(

以下函数的Big-O运行时是什么?解释一下

static int fib(int n){
  if (n <= 2)
     return 1;
  else 
     return fib(n-1) + fib(n-2)
   }
静态整数fib(整数n){
如果(n证明

将计算
Fib(n)
的时间函数建模为计算
Fib(n-1)
的时间加上计算
Fib(n-2)
的时间加上将它们相加的时间(
O(1)

T(n证明

将计算
Fib(n)
的时间函数建模为计算
Fib(n-1)
的时间加上计算
Fib(n-2)
的时间加上将它们相加的时间(
O(1)


T(n)=c+T(n-1)+T(n-2)。T(n)=T(n-1)+T(n-2)+O(1)T(n)=O(2^n-1)+O(2^n-2)+O(1)=O(2^n)这就是我所拥有的。我只是反复检查我自己,只是试图对使用大O和递归有一个全面的了解。大O和递归不是特定于语言的,所以这不是一个真正的java问题。这有点晚了,因为有人已经给出了答案,并且被接受了,但是仅仅陈述问题并要求answ通常是不好的呃,如果你先陈述问题,然后告诉我们目前为止你有什么解决方案以及你不确定的是什么(我认为第二个代码片段可能是你的工作,所以我的评论主要针对问题的第一部分)解决T(n)in T(n)=c+T(n-1)+T(n-2)。T(n)=T(n-1)+T(n-2)+O(2^n-2)+O(1)=O(2^n)这就是我所拥有的。我只是反复检查我自己,只是试图对使用大O和递归有一个全面的了解。大O和递归不是特定于语言的,所以这不是一个真正的java问题。这有点晚了,因为有人已经给出了答案,并且被接受了,但是仅仅陈述问题并要求answ通常是不好的呃。如果你先陈述问题,然后告诉我们你目前有什么解决方案,以及你不确定的具体内容,那就更好了。(我认为第二段代码可能是你的工作,所以我的评论主要针对你问题的第一部分)正是我所拥有的。太棒了。谢谢你的帮助。只是想再检查一下。正是我所拥有的。太棒了。谢谢你的帮助。只是想再检查一下。
 public static int fibonacci (int n){
 int previous = -1;
 int result = 1;
 for (int i = 0; i <= n; ++i)
 {
 int sum = result + previous;
 previous = result;
 result = sum;
 }
 return result;
}
}
int prev1=0, prev2=1;
for(int i=0; i<n; i++) {
  int savePrev1 = prev1;
  prev1 = prev2;
  prev2 = savePrev1 + prev2;
}
return prev1;