395得票12回答
斐波那契数列的计算复杂度

我理解大O符号,但不知道如何计算许多函数的复杂度。特别是,我一直在尝试弄清楚斐波那契数列的朴素版本的计算复杂度:int Fibonacci(int n) { if (n <= 1) return n; else return Fibonac...

167得票37回答
Java递归斐波那契数列

请解释这段简单的代码:public int fibonacci(int n) { if(n == 0) return 0; else if(n == 1) return 1; else return fibonacci(n - 1...

124得票4回答
这个斐波那契函数是如何被记忆化的?

这个斐波那契函数是通过什么机制进行记忆化的?fib = (map fib' [0..] !!) where fib' 1 = 1 ...

81得票14回答
斐波那契递归函数是如何“工作”的?

我对JavaScript还很陌生,正在学习它的相关知识。在阅读过程中,我遇到了一个讲解函数递归的章节。其中使用了一个示例函数来找出斐波那契数列的第n个数字。代码如下: function fibonacci(n) { if (n < 2){ return 1;...

81得票5回答
如何编写一个生成器类?

我看到很多生成器函数的例子,但我想知道如何为类编写生成器。比方说,我想将斐波那契数列写成一个类。class Fib: def __init__(self): self.a, self.b = 0, 1 def __next__(self): y...

80得票10回答
为什么斐波那契数在计算机科学中如此重要?

斐波那契数列已经成为计算机科学学生递归的流行入门课程,有强有力的论据表明它们在自然界中存在。因此,我们中的许多人都很熟悉它们。 它们也存在于计算机科学的其他领域;基于这个序列的数据结构和算法具有惊人的效率。 有两个主要的例子: 斐波那契堆比二项式堆具有更好的摊销运行时间。 斐波那契搜索...

77得票17回答
子线性时间内求解第n个斐波那契数。

是否有一种算法可以在亚线性时间内计算第n个斐波那契数?

77得票24回答
找出非常大的'n'的第n个斐波那契数

我想知道如何找到斐波那契数列的第n项,比如说n=1000000。使用小学生递推公式 fib(n)=fib(n-1)+fib(n-2),算出第50项需要2到3分钟! 在搜索了一下后,我了解到有Binet公式,但是它对于n>79的值不太适用,可以在这里查看。 是否存在类似于找素数的算法来解决这...

77得票21回答
测试一个数字是否为斐波那契数列。

我知道如何生成斐波那契数列,但我不知道如何检测给定数字是否属于斐波那契数列。一种方法是生成斐波那契数列直到该数字,并查看该数字是否在数组中,但肯定有另一种更简单更快的方法。 有什么想法吗?

73得票4回答
理解递归定义的列表(使用zipWith定义斐波那契数列)

我正在学习Haskell,并遇到了以下代码:fibs = 0 : 1 : zipWith (+) fibs (tail fibs) 我有些难以理解的代码,不太清楚它是如何工作的。我很清楚这段代码非常巧妙,只是我希望能够理解当我写下这样的代码时,Haskell是如何“填充”fibs的。take ...