使用递归和循环打印斐波那契级数的时间和空间复杂度(大O表示法)是多少?有一个用于打印斐波那契数的循环,在计算时间和空间复杂度时是否也包括该循环?
我下面的分析正确吗?
public int printFibonacciSeries(int n) {
if (n <= 1) {
return n;
}
return printFibonacciSeries(n - 1) + printFibonacciSeries(n - 2);
}
public static void main(String[] args) {
...
FibonacciSeries fibonacciSeries = new FibonacciSeries();
for (int i = 0; i < n; i++) {
System.out.println("i=" + i + " and " + fibonacciSeries.printFibonacciSeries(i));
}
}
我的分析:
public void printFibonacciSeriesWithLoop(int n) {
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
if (i <= 1) {
arr[i] = i;
} else {
arr[i] = arr[i-1] + arr[i-2];
}
}
Arrays.stream(arr).forEach(System.out::println);
}
public static void main(String[] args) {
...
FibonacciSeries fibonacciSeries = new FibonacciSeries();
fibonacciSeries.printFibonacciSeriesWithLoop(i);
}
我的分析:
这可能是一个更好的评论,但因为我没有足够的代表,这里去-
https://youtu.be/_JtPhF8MshA?t=219您可以在这里看到递归实现是如何占用空间O(n)而不是O(1),因为递归树是在它们全部添加和关闭之前构建的!
(注意-链接视频中的时间戳显示了Fac(n)功能的图,但随后在视频Fib功能中也进行了解释,但由于那里没有图,因此附上了此图)
我有一个使用递归打印斐波那契级数的程序。有更好的方法,但我被要求使用递归,所以我不得不这样做。 这是程序: 我知道这对于斐波那契级数来说真的是一种糟糕的方法,从上面可以清楚地看出,当项超过35时,程序需要很多时间才能完成。 我看了这个答案,不明白他们是怎么解决的,但看起来 fibo(int n)的时间复杂度为O(2^n) 我可能完全错了,但我只想: 这个完整程序的时间复杂度是多少,简要解释一下您是
Python3 实例 以下代码使用递归的方式来生成斐波那契数列: 实例(Python 3.0+)# Filename : test.py # author by : www.runoob.com def recur_fibo(n): """递归函数 输出斐波那契数列""" if n <= 1: return n else: return(recur_fibo(n-1) + recur_fibo(n
问题内容: 我在大学为我的Programming II类编写的程序需要一些帮助。这个问题要求人们使用递归来计算斐波那契数列。必须将计算出的斐波那契数存储在一个数组中,以停止不必要的重复计算并减少计算时间。 我设法使程序在没有数组和存储的情况下运行,现在我试图实现该功能,但遇到了麻烦。我不确定如何组织它。我已经浏览了Google并浏览了一些书,但没有太多帮助我解决如何实施解决方案的方法。 上面是不正
问题内容: 请解释以下简单代码: 我对最后一行感到困惑,特别是因为例如,如果n = 5,则将调用fibonacci(4)+ fibonacci(3),依此类推,但我不理解该算法如何以此来计算索引5的值方法。请详细解释! 问题答案: 在斐波那契数列中,每一项都是前两项的总和。因此,你编写了一个递归算法。 所以, 现在你已经知道了。因此,你可以随后计算其他值。 现在, 从斐波那契数列中我们可以看到斐波
我试图想出一个程序,从用户那里获取任何数字,并生成斐波那契码的第n个数字。当我完成工作时,它会显示下一个,而不是我需要的。例如,我正在寻找第11个#和它的生产233而不是144。这是我的代码:
我在计算这段从0到n打印所有斐波那契数的代码的时间复杂度。根据我的计算,方法需要,并且由于它被调用次数,所以它出来是。然而,书上说它是。有人能解释一下为什么这里的时间复杂度会是吗? 代码如下: