我正在做一个主题的任务是fib(0)被定义为= 1.但那不可能是正确的?fib(0)是0?
Program with fib(0) = 1; spits out fib(4) = 5
Program with fib(0) = 0; spits out fib(3) = 3
Run Code Online (Sandbox Code Playgroud)
什么是正确的定义?
Dal*_*ann 29
Fib(0)= 1的定义称为组合定义,Fib(0)= 0是经典定义.两者都在Fibonacci Quarterly中使用,尽管使用组合定义的作者需要添加一个解释句子.真实计数中的Benjamin和Quinn使用f_n表示第n个组合Fibonacci数,使用F_n表示第n个经典Fibonacci数.组合定义很好,对于计算诸如"有多少种方式可以走n步,一次采取一个或两个步骤?"这样的问题并不奇怪.当n为0时,有一种方法可以做到,而不是零方式.
Pas*_*ent 10
来自维基百科上的Fibonacci数字条目:
在数学中,斐波纳契数是以下数字序列:
根据定义,前两个斐波纳契数是0和1,每个剩余数是前两个的总和.一些来源省略了初始0,而是以两个1开始序列.
在数学术语中,斐波纳契数的序列Fn由递归关系定义
有种子价值
根据Fibonacci序列的定义,您可以生成用于定义第n个元素的闭合形式:
F(n) = ( f^n - (1-f)^n ) / sqrt(5),
where f = (1 + sqrt(5)) / 2 [the golden ratio]
Run Code Online (Sandbox Code Playgroud)
对于n = 0,它显然是0:
F(0) = (1 - 1) / sqrt(5) = 0.
Run Code Online (Sandbox Code Playgroud)
http://en.wikipedia.org/wiki/Fibonacci_number
斐波那契本人从1开始而不是从0开始。重要的是要认识到一个人的观点并非不可改变的事实,值得考虑的是,您不一定比创建该序列的人了解得更多。我认为以0开头的序列是很好的,只要您不那样做是一种且唯一的绝对正确的处理方式,因为“索引0”处的数字基本上是模棱两可的,应始终明确地进行通信。
“指数”问题仅适用于我们,而不适用于斐波那契。因此,如果我们想使用他的起始编号并且使用基于0的索引,则将其起始编号放在索引0处,或者如果我们使用基于1的索引,则将其起始编号放在索引1中。 。
而且由于确实有可能继续向左排序,因此也使得从0开始完全是任意的。为什么不从-1开始并转到-1、1、0、1、1、2 ...?